From f1d9a50a3be2bfabc6091d51e120ca63ac1ab2d4 Mon Sep 17 00:00:00 2001 From: ArenBabikian Date: Fri, 15 Feb 2019 12:42:15 -0500 Subject: Set up #19 --- .../test/filesystem/impl/FileSystemImpl.java | 205 +++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileSystemImpl.java (limited to 'Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileSystemImpl.java') 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 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +/** + * + * An implementation of the model object 'File System'. + * + *

+ * The following features are implemented: + *

+ * + * + * @generated + */ +public class FileSystemImpl extends MinimalEObjectImpl.Container implements FileSystem { + /** + * The cached value of the '{@link #getRoot() Root}' containment reference. + * + * + * @see #getRoot() + * @generated + * @ordered + */ + protected Dir root; + + /** + * The cached setting delegate for the '{@link #getLive() Live}' reference list. + * + * + * @see #getLive() + * @generated + * @ordered + */ + protected EStructuralFeature.Internal.SettingDelegate LIVE__ESETTING_DELEGATE = ((EStructuralFeature.Internal)filesystemPackage.Literals.FILE_SYSTEM__LIVE).getSettingDelegate(); + + /** + * + * + * @generated + */ + protected FileSystemImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return filesystemPackage.Literals.FILE_SYSTEM; + } + + /** + * + * + * @generated + */ + public Dir getRoot() { + return root; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRoot(Dir newRoot, NotificationChain msgs) { + Dir oldRoot = root; + root = newRoot; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, filesystemPackage.FILE_SYSTEM__ROOT, oldRoot, newRoot); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRoot(Dir newRoot) { + if (newRoot != root) { + NotificationChain msgs = null; + if (root != null) + msgs = ((InternalEObject)root).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - filesystemPackage.FILE_SYSTEM__ROOT, null, msgs); + if (newRoot != null) + msgs = ((InternalEObject)newRoot).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - filesystemPackage.FILE_SYSTEM__ROOT, null, msgs); + msgs = basicSetRoot(newRoot, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, filesystemPackage.FILE_SYSTEM__ROOT, newRoot, newRoot)); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + public EList getLive() { + return (EList)LIVE__ESETTING_DELEGATE.dynamicGet(this, null, 0, true, false); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case filesystemPackage.FILE_SYSTEM__ROOT: + return basicSetRoot(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case filesystemPackage.FILE_SYSTEM__ROOT: + return getRoot(); + case filesystemPackage.FILE_SYSTEM__LIVE: + return getLive(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case filesystemPackage.FILE_SYSTEM__ROOT: + setRoot((Dir)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case filesystemPackage.FILE_SYSTEM__ROOT: + setRoot((Dir)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case filesystemPackage.FILE_SYSTEM__ROOT: + return root != null; + case filesystemPackage.FILE_SYSTEM__LIVE: + return LIVE__ESETTING_DELEGATE.dynamicIsSet(this, null, 0); + } + return super.eIsSet(featureID); + } + +} //FileSystemImpl -- cgit v1.2.3-70-g09d2 From fcb7e3a8e29d6def26b06decc504767c5864e5ca Mon Sep 17 00:00:00 2001 From: ArenBabikian Date: Sun, 17 Feb 2019 15:11:07 -0500 Subject: Commit before merge --- .../.classpath | 1 + .../.gitignore | 3 + .../META-INF/MANIFEST.MF | 3 +- .../build.properties | 3 - .../configs/ecore.vsconfig | 34 + .../configs/fam.vsconfig | 25 + .../configs/fileSystem.vsconfig | 25 + .../configs/yakindu.vsconfig | 25 + .../configurations/ecore.vsconfig | 34 - .../configurations/fam.vsconfig | 25 - .../configurations/fileSystem.vsconfig | 25 - .../configurations/yakindu.vsconfig | 25 - .../functionalPlugin.txt | 145 + .../metamodels/fam.ecore | 12 +- .../outputs/fam/debug/errors.txt | 458 +- .../fam/debug/generated3valued.vql_deactivated | 48584 ++++++------------- .../outputs/fam/debug/generation.logicproblem | 1969 +- .../outputs/fam/debug/init.partialmodel | 396 +- .../outputs/fam/debug/problem.als | 32 +- .../outputs/fam/log.txt | 2 +- .../outputs/fam/models/1.gml | 10018 +--- .../outputs/fam/models/1.png | Bin 159195 -> 68150 bytes .../outputs/fam/models/1.xmi | 19 +- .../outputs/fam/models/2.gml | 7091 +-- .../outputs/fam/models/2.png | Bin 177546 -> 64057 bytes .../outputs/fam/models/2.xmi | 19 +- .../outputs/fam/models/3.gml | 5921 ++- .../outputs/fam/models/3.png | Bin 177661 -> 64831 bytes .../outputs/fam/models/3.xmi | 20 +- .../outputs/fam/models/4.gml | 7403 ++- .../outputs/fam/models/4.png | Bin 189772 -> 80996 bytes .../outputs/fam/models/4.xmi | 17 +- .../outputs/fam/models/5.gml | 7507 ++- .../outputs/fam/models/5.png | Bin 194199 -> 66383 bytes .../outputs/fam/models/5.xmi | 16 +- .../outputs/fam/statistics.csv | 68 +- .../outputs/yakindu/debug/errors.txt | 66 +- .../yakindu/debug/generated3valued.vql_deactivated | 14693 +++--- .../outputs/yakindu/debug/generation.logicproblem | 1456 +- .../outputs/yakindu/debug/init.partialmodel | 49 +- .../outputs/yakindu/log.txt | 2 +- .../outputs/yakindu/models/1.gml | 11023 ++++- .../outputs/yakindu/models/1.png | Bin 33827 -> 127573 bytes .../outputs/yakindu/models/1.xmi | 22 +- .../outputs/yakindu/models/2.gml | 10733 +++- .../outputs/yakindu/models/2.png | Bin 29697 -> 116286 bytes .../outputs/yakindu/models/2.xmi | 21 +- .../outputs/yakindu/statistics.csv | 32 +- .../plugin.xml | 15 +- .../test/ecore/queries/ecorePatterns.vql | 14 +- .../standalone/test/fam/queries/famPatterns.vql | 103 - .../standalone/test/fam/queries/famSPatterns.vql | 13 + .../standalone/test/fam/queries/famXPatterns.vql | 103 + .../test/fam/queries/TerminatorAndInformation.java | 2 +- .../standalone/test/yakindu/queries/.gitignore | 24 + .../standalone/test/TestExecutionICSE.xtend | 22 + .../standalone/test/filesystem/FileSystem.java | 1 - .../test/filesystem/impl/FileSystemImpl.java | 19 +- .../filesystem/impl/filesystemPackageImpl.java | 18 - 59 files changed, 65914 insertions(+), 62442 deletions(-) create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/ecore.vsconfig create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fileSystem.vsconfig create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/yakindu.vsconfig delete mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/ecore.vsconfig delete mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fam.vsconfig delete mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fileSystem.vsconfig delete mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/yakindu.vsconfig create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/functionalPlugin.txt delete mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famSPatterns.vql create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famXPatterns.vql create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/TestExecutionICSE.xtend (limited to 'Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileSystemImpl.java') diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath index dbb1533f..5d01c425 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath @@ -1,6 +1,7 @@ + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore index ae3c1726..245e4e4c 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore @@ -1 +1,4 @@ /bin/ +/xtend-gen/* +/src-gen/* +/outputs/* \ No newline at end of file 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 index 61135ac9..0b81cb7f 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/META-INF/MANIFEST.MF +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/META-INF/MANIFEST.MF @@ -25,7 +25,8 @@ Require-Bundle: org.eclipse.viatra.addon.querybasedfeatures.runtime, org.eclipse.viatra.query.runtime;bundle-version="2.1.0", org.eclipse.viatra.query.runtime.rete;bundle-version="2.1.0", org.eclipse.viatra.query.runtime.localsearch;bundle-version="2.1.0", - org.eclipse.xtext.xbase.lib;bundle-version="2.12.0" + org.eclipse.xtext.xbase.lib;bundle-version="2.12.0", + hu.bme.mit.inf.dslreasoner.application;bundle-version="1.0.0" Import-Package: org.apache.log4j Automatic-Module-Name: ca.mcgill.ecse.dslreasoner.standalone.test Bundle-ActivationPolicy: lazy diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties index 876d970c..e765de8d 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties @@ -1,8 +1,5 @@ bin.includes = META-INF/,\ - plugin.xml,\ - plugin.properties -jars.compile.order = . source.. = src/,\ src-gen/,\ queries/ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/ecore.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/ecore.vsconfig new file mode 100644 index 00000000..7f9d9caf --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/ecore.vsconfig @@ -0,0 +1,34 @@ +import epackage "http://www.eclipse.org/emf/2002/Ecore" +import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.EcorePatterns" + +metamodel allSupported { package ecore excluding { + EClassifier.instanceClass,EClassifier.defaultValue,EEnumLiteral.instance,EStructuralFeature.defaultValue, + EJavaClass, EJavaObject, EJavaObject, + EPackage.eFactoryInstance, EFactory, EFactory.ePackage + } +} + +generate { + metamodel = allSupported + constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries} + partial-model = { "platform:/resource/Ecore-Plugin/InitialPackage.ecore" } + solver = ViatraSolver + scope = { + #node += 5, + #string += { "A", "B" }, + #int += {0,1,-1} + } + + config = { + runtime = 10000, + log-level = normal + } + + number = 3 + runs = 1 + + debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/ecore/debug" + log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/ecore/log.txt" + output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/ecore/models" + statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/ecore/statistics.csv" +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig new file mode 100644 index 00000000..8137ddf7 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig @@ -0,0 +1,25 @@ +import epackage "FamMetamodel" +import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamPatterns" + +generate { + metamodel = { package fam } +// constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries} +// partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi"} + solver = ViatraSolver + scope = { + #node = 10 + } + + config = { + runtime = 10000, + log-level = normal + } + + number = 5 + runs = 1 + + debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug" + log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt" + output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models" + statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv" +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fileSystem.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fileSystem.vsconfig new file mode 100644 index 00000000..ea95336b --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fileSystem.vsconfig @@ -0,0 +1,25 @@ +import epackage "FileSystemMetamodel" +import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.FileSystemPatterns" + +generate { + metamodel = { package filesystem } + constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries} + partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi"} + solver = ViatraSolver + scope = { + # node = 10 + } + + config = { + runtime = 10000, + log-level = normal + } + + number = 5 + runs = 1 + + debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fileSystem/debug" + log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fileSystem/log.txt" + output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fileSystem/models" + statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fileSystem/statistics.csv" +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/yakindu.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/yakindu.vsconfig new file mode 100644 index 00000000..ff2038e0 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/yakindu.vsconfig @@ -0,0 +1,25 @@ +import epackage "YakinduMetamodel" +import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.YakinduPatterns" + +generate { + metamodel = { package yakindu } + constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries } + partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi"} + solver = ViatraSolver + scope = { + #node = 10 + } + + config = { + runtime = 10000, + log-level = normal + } + + number = 5 + runs = 1 + + debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug" + log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt" + output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models" + statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv" +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/ecore.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/ecore.vsconfig deleted file mode 100644 index 9360ab61..00000000 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/ecore.vsconfig +++ /dev/null @@ -1,34 +0,0 @@ -import epackage "http://www.eclipse.org/emf/2002/Ecore" -import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.EcorePatterns" - -metamodel allSupported { package ecore excluding { - EClassifier.instanceClass,EClassifier.defaultValue,EEnumLiteral.instance,EStructuralFeature.defaultValue, - EJavaClass, EJavaObject, EJavaObject, - EPackage.eFactoryInstance, EFactory, EFactory.ePackage - } -} - -generate { - metamodel = allSupported -// constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries} - partial-model = { "platform:/resource/Ecore-Plugin/InitialPackage.ecore" } - solver = ViatraSolver - scope = { - #node += 5, - #string += { "A", "B" }, - #int += {0,1,-1} - } - - config = { - runtime = 10000, - log-level = normal - } - - number = 3 - runs = 1 - - debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug" - log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt" - output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models" - statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv" -} \ 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 deleted file mode 100644 index d376dce8..00000000 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fam.vsconfig +++ /dev/null @@ -1,25 +0,0 @@ -import epackage "FamMetamodel" -import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamPatterns" - -generate { - metamodel = { package fam } - constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries} - partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi"} - solver = ViatraSolver - scope = { - #node = 5 - } - - config = { - runtime = 10000, - log-level = normal - } - - number = 2 - runs = 1 - - debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug" - log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt" - output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models" - statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv" -} \ 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 deleted file mode 100644 index 0e510a55..00000000 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fileSystem.vsconfig +++ /dev/null @@ -1,25 +0,0 @@ -import epackage "FileSystemMetamodel" -import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.FileSystemPatterns" - -generate { - metamodel = { package filesystem } - constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries} - partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi"} - solver = ViatraSolver - scope = { - #node = 5 - } - - config = { - runtime = 10000, - log-level = normal - } - - number = 2 - runs = 1 - - debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug" - log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt" - output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models" - statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv" -} \ 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 deleted file mode 100644 index 423bf80e..00000000 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/yakindu.vsconfig +++ /dev/null @@ -1,25 +0,0 @@ -import epackage "YakinduMetamodel" -import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.YakinduPatterns" - -generate { - metamodel = { package yakindu } - constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries } - partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi"} - solver = ViatraSolver - scope = { - #node = 6 - } - - config = { - runtime = 10000, - log-level = normal - } - - number = 2 - runs = 1 - - debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug" - log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt" - output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models" - statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv" -} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/functionalPlugin.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/functionalPlugin.txt new file mode 100644 index 00000000..ca86fe6b --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/functionalPlugin.txt @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore index d9c8bfef..05023c15 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore @@ -8,11 +8,7 @@ - -
- - + volatile="true" transient="true" derived="true"/> @@ -24,11 +20,7 @@ - -
- - + changeable="false" volatile="true" transient="true" derived="true"/> (FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) @@ -26,122 +67,108 @@ Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalo hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException): + hu.bme.mit.inf.dlsreasoner.alloy.reasoner.builder.Alloy2LogicMapper.transformOutput(Alloy2LogicMapper.java:53) + hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver.solve(AlloySolver.java:66) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.xyz.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.xyz.terminatorAndInformation contains errors. - org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) - org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) - org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) @@ -182,34 +209,6 @@ Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalo hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - 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 - hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.TypeOfRange(EAttributeMapper_RelationsOverTypes.java:237) - hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.transformEAttributes(EAttributeMapper_RelationsOverTypes.java:70) - hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformEAttributes(Ecore2Logic.java:140) - hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformMetamodel(Ecore2Logic.java:83) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:189) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException): - hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108) - org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41) - com.google.common.collect.Iterators$6.computeNext(Iterators.java:617) - com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145) - com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140) - com.google.common.collect.Iterators.addAll(Iterators.java:366) - com.google.common.collect.Iterables.addAll(Iterables.java:332) - com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383) - org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592) - hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84) - hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213) - hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205) hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66) @@ -234,36 +233,49 @@ Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalo hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57) - hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57) - hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException): - hu.bme.mit.inf.dlsreasoner.alloy.reasoner.builder.Alloy2LogicMapper.transformOutput(Alloy2LogicMapper.java:53) - hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver.solve(AlloySolver.java:66) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:132) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:343) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType @@ -274,36 +286,148 @@ Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalo hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57) hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96) hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:132) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:343) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59) - hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57) - hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:132) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:343) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Unable to translate query "ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.oppositeDifferentClass". -Reason: IllegalArgumentException, Inconsistent types: [EStructuralFeature class, EModelElement class, ENamedElement class, EReference class, EObject class, ETypedElement class] - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:166) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:132) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:343) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Unable to translate query "ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.oppositeDifferentClass". -Reason: IllegalArgumentException, Inconsistent types: [EStructuralFeature class, EModelElement class, ENamedElement class, EReference class, EObject class, ETypedElement class] - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:166) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type contains errors. + org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) + org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) + org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) + hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:132) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:343) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Class FunctionalArchitectureModel is not translated to logic! + hu.bme.mit.inf.dslreasoner.ecore2logic.EClassMapper_AllElementAsObject.TypeofEClass(EClassMapper_AllElementAsObject.java:63) + hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.TypeofEClass(Ecore2Logic.java:96) + hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation.transform(InstanceModel2PartialInterpretation.java:99) + hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic.transform(InstanceModel2Logic.java:19) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:192) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) org.eclipse.core.internal.jobs.Worker.run(Worker.java:56) \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated index f02c64b0..7899a25f 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated @@ -105,22 +105,22 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -148,23 +148,23 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -193,20 +193,20 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -234,21 +234,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -277,20 +277,20 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -319,20 +319,20 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -360,23 +360,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -405,22 +405,22 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -449,24 +449,24 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -536,21 +536,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -610,7 +610,7 @@ private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model(problem,interpretation,source,target); } /** * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) @@ -619,7 +619,7 @@ private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model(problem,interpretation,source,target); } /** * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) @@ -1102,27 +1102,44 @@ private pattern mayInRelationinterface_reference_FunctionalData( /** * Matcher for detecting tuples t where []type attribute Function(source,target) */ - private pattern mustInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} /** - * Matcher for detecting tuples t where []type attribute Function(source,target) + * Matcher for detecting tuples t where <>type attribute Function(source,target) */ - private pattern mayInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} ////////// // 1.3 Relation Definition Indexers ////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { @@ -1154,7 +1171,7 @@ private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_tes find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); var_virtual1 == var_T; } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { @@ -1186,7 +1203,7 @@ private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); find mayEquivalent(problem, interpretation, var_virtual1, var_T); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { @@ -1218,108 +1235,8 @@ private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_ find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); var_virtual1 == var_T; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries rootElements +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( problem:LogicProblem, interpretation:PartialInterpretation, var_Model, var_Root) { @@ -1333,7 +1250,7 @@ private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_tes find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); var_virtual0 == var_Root; } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( problem:LogicProblem, interpretation:PartialInterpretation, var_Model, var_Root) { @@ -1347,7 +1264,7 @@ private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_Root); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( problem:LogicProblem, interpretation:PartialInterpretation, var_Model, var_Root) { @@ -1361,8 +1278,8 @@ private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_ find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); var_virtual0 == var_Root; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries parent +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( problem:LogicProblem, interpretation:PartialInterpretation, var_Func, var_Par) { @@ -1376,7 +1293,7 @@ private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_tes find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); var_virtual0 == var_Par; } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( problem:LogicProblem, interpretation:PartialInterpretation, var_Func, var_Par) { @@ -1390,7 +1307,7 @@ private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_Par); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( problem:LogicProblem, interpretation:PartialInterpretation, var_Func, var_Par) { @@ -1404,8 +1321,8 @@ private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_ find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); var_virtual0 == var_Par; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries model +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( problem:LogicProblem, interpretation:PartialInterpretation, var_This, var_Target) { @@ -1417,7 +1334,7 @@ private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_tes find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( problem:LogicProblem, interpretation:PartialInterpretation, var_This, var_Target) { @@ -1429,7 +1346,7 @@ private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( problem:LogicProblem, interpretation:PartialInterpretation, var_This, var_Target) { @@ -1472,10 +1389,10 @@ private pattern mustTransitiveContains(source,target) { ////////// // 2.1 Invalidated by WF Queries ////////// -pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); } ////////// @@ -1492,14 +1409,23 @@ pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicPr check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); } ////////// @@ -1509,16 +1435,12 @@ pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_term ////////// private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ find interpretation(problem,interpretation); find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -1530,19 +1452,23 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -1553,33 +1479,49 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -1613,151 +1555,135 @@ pattern createObject_FunctionalInput_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalOutput_class( +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -1765,84 +1691,84 @@ pattern createObject_Function_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); -} -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); -} -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } ////////// @@ -1894,7 +1820,8 @@ pattern refineRelation_type_attribute_Function( find mustInstanceOfFunctionType_enum(problem,interpretation,to); find mayInRelationtype_attribute_Function(problem,interpretation,from,to); neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); -}import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" @@ -2000,23 +1927,23 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -2044,23 +1971,23 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -2088,21 +2015,21 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -2130,20 +2057,20 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); @@ -2172,21 +2099,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -2214,21 +2141,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -2256,22 +2183,22 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); @@ -2300,23 +2227,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -2344,24 +2271,24 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); @@ -2432,21 +2359,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -2506,7 +2433,7 @@ private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model(problem,interpretation,source,target); } /** * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) @@ -2515,7 +2442,7 @@ private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model(problem,interpretation,source,target); } /** * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) @@ -2998,27 +2925,44 @@ private pattern mayInRelationinterface_reference_FunctionalData( /** * Matcher for detecting tuples t where []type attribute Function(source,target) */ - private pattern mustInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} /** - * Matcher for detecting tuples t where []type attribute Function(source,target) + * Matcher for detecting tuples t where <>type attribute Function(source,target) */ - private pattern mayInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} ////////// // 1.3 Relation Definition Indexers ////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { @@ -3050,7 +2994,7 @@ private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_tes find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); var_virtual1 == var_T; } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { @@ -3082,7 +3026,7 @@ private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); find mayEquivalent(problem, interpretation, var_virtual1, var_T); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { @@ -3114,108 +3058,8 @@ private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_ find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); var_virtual1 == var_T; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries rootElements +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( problem:LogicProblem, interpretation:PartialInterpretation, var_Model, var_Root) { @@ -3229,7 +3073,7 @@ private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_tes find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); var_virtual0 == var_Root; } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( problem:LogicProblem, interpretation:PartialInterpretation, var_Model, var_Root) { @@ -3243,7 +3087,7 @@ private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_Root); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( problem:LogicProblem, interpretation:PartialInterpretation, var_Model, var_Root) { @@ -3257,8 +3101,8 @@ private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_ find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); var_virtual0 == var_Root; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries parent +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( problem:LogicProblem, interpretation:PartialInterpretation, var_Func, var_Par) { @@ -3272,7 +3116,7 @@ private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_tes find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); var_virtual0 == var_Par; } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( problem:LogicProblem, interpretation:PartialInterpretation, var_Func, var_Par) { @@ -3286,7 +3130,7 @@ private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_Par); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( problem:LogicProblem, interpretation:PartialInterpretation, var_Func, var_Par) { @@ -3300,8 +3144,8 @@ private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_ find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); var_virtual0 == var_Par; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries model +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( problem:LogicProblem, interpretation:PartialInterpretation, var_This, var_Target) { @@ -3313,7 +3157,7 @@ private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_tes find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( problem:LogicProblem, interpretation:PartialInterpretation, var_This, var_Target) { @@ -3325,7 +3169,7 @@ private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( problem:LogicProblem, interpretation:PartialInterpretation, var_This, var_Target) { @@ -3368,10 +3212,10 @@ private pattern mustTransitiveContains(source,target) { ////////// // 2.1 Invalidated by WF Queries ////////// -pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); } ////////// @@ -3388,14 +3232,23 @@ pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicPr check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); } ////////// @@ -3406,11 +3259,11 @@ pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_term private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -3418,11 +3271,11 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -3430,15 +3283,15 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -3449,63 +3302,45 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalInterface_class( +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -3555,6 +3390,66 @@ pattern createObject_Function_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, @@ -3585,48 +3480,6 @@ pattern createObject_FAMTerminator_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_InformationLink_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, @@ -3661,83 +3514,83 @@ pattern createObject_FunctionalOutput_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } @@ -3898,22 +3751,22 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -3942,10 +3795,10 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); @@ -3953,10 +3806,10 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); @@ -3986,20 +3839,20 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -4028,20 +3881,20 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -4070,20 +3923,20 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -4112,20 +3965,20 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -4153,23 +4006,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -4197,22 +4050,22 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); @@ -4241,25 +4094,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -4330,9 +4183,9 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); @@ -4340,9 +4193,9 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); @@ -4399,21 +4252,38 @@ private pattern mayInRelationinterface_reference_FunctionalElement( /** * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ - private pattern mustInRelationmodel_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); - } +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} /** - * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ - private pattern mayInRelationmodel_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); - } +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} /** * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ @@ -4895,504 +4765,189 @@ private pattern mayInRelationinterface_reference_FunctionalData( /** * Matcher for detecting tuples t where []type attribute Function(source,target) */ - private pattern mustInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} /** - * Matcher for detecting tuples t where []type attribute Function(source,target) + * Matcher for detecting tuples t where <>type attribute Function(source,target) */ - private pattern mayInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} ////////// // 1.3 Relation Definition Indexers ////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - var_virtual0 == var_I; - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -}or{ + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - var_virtual0 == var_In; - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_I); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - find mayEquivalent(problem, interpretation, var_virtual1, var_T); -}or{ + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_In); - find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - find mayEquivalent(problem, interpretation, var_virtual1, var_T); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - var_virtual0 == var_I; - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - var_virtual0 == var_In; - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Root; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mayInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_Root); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Root; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Par; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_Func); - find mayInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mayInstanceOfFunction_class(problem,interpretation,var_Func); - find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_Par); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Par; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); -} - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or - - { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or - - { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or - - { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or - - { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or - - { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); -} - -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); - find mustInstanceOfInformationLink_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} - -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -} -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalOutput_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -5442,105 +4997,135 @@ pattern createObject_Function_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -5548,84 +5133,84 @@ pattern createObject_InformationLink_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } ////////// @@ -5784,23 +5369,23 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -5828,23 +5413,23 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -5872,21 +5457,21 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -5914,21 +5499,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -5956,21 +5541,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -5999,20 +5584,20 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6040,23 +5625,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6084,23 +5669,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6128,25 +5713,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6216,21 +5801,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -6286,21 +5871,38 @@ private pattern mayInRelationinterface_reference_FunctionalElement( /** * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ - private pattern mustInRelationmodel_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); - } +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} /** - * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ - private pattern mayInRelationmodel_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); - } +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} /** * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ @@ -6782,346 +6384,43 @@ private pattern mayInRelationinterface_reference_FunctionalData( /** * Matcher for detecting tuples t where []type attribute Function(source,target) */ - private pattern mustInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []type attribute Function(source,target) - */ - private pattern mayInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } - -////////// -// 1.3 Relation Definition Indexers -////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - var_virtual0 == var_I; - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - var_virtual0 == var_In; - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_I); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - find mayEquivalent(problem, interpretation, var_virtual1, var_T); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_In); - find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - find mayEquivalent(problem, interpretation, var_virtual1, var_T); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - var_virtual0 == var_I; - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - var_virtual0 == var_In; - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Root; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mayInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_Root); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Root; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Par; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_Func); - find mayInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mayInstanceOfFunction_class(problem,interpretation,var_Func); - find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_Par); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Par; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } +////////// +// 1.3 Relation Definition Indexers +////////// + ////////// // 1.4 Containment Indexer ////////// @@ -7158,6 +6457,15 @@ private pattern mustTransitiveContains(source,target) { ////////// // 3.1 Unfinishedness Measured by Multiplicity ////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); @@ -7167,6 +6475,15 @@ pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicPr check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} ////////// // 3.2 Unfinishedness Measured by WF Queries @@ -7180,19 +6497,19 @@ pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicPr private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -7200,7 +6517,7 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -7208,11 +6525,11 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -7223,33 +6540,33 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -7283,33 +6600,45 @@ pattern createObject_FunctionalOutput_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -7343,15 +6672,33 @@ pattern createObject_InformationLink_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -7401,118 +6748,88 @@ pattern createObject_Function_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalInterface_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); } ////////// @@ -7672,22 +6989,22 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -7716,22 +7033,22 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -7760,20 +7077,20 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -7802,9 +7119,9 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); @@ -7812,9 +7129,9 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); @@ -7843,21 +7160,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -7885,21 +7202,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -7928,22 +7245,22 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -7971,23 +7288,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -8015,25 +7332,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -8104,20 +7421,20 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -8799,39 +8116,39 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -8842,6 +8159,36 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, @@ -8872,181 +8219,151 @@ pattern createObject_InformationLink_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class( +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -9054,84 +8371,84 @@ pattern createObject_FAMTerminator_class( ////////// // 4.2 Type refinement ////////// +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); -} -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); -} -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } ////////// @@ -9290,23 +8607,23 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9334,23 +8651,23 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9378,21 +8695,21 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9420,21 +8737,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9462,21 +8779,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9504,21 +8821,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9546,22 +8863,22 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); @@ -9590,23 +8907,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9634,25 +8951,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9722,21 +9039,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -10418,39 +9735,39 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -10461,135 +9778,123 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -10639,33 +9944,45 @@ pattern createObject_Function_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -10673,84 +9990,84 @@ pattern createObject_FAMTerminator_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } ////////// @@ -10909,23 +10226,23 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -10953,23 +10270,23 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -10997,21 +10314,21 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -11039,21 +10356,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -11081,21 +10398,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -11123,21 +10440,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -11165,23 +10482,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -11209,23 +10526,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -11253,25 +10570,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -11341,21 +10658,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -12037,15 +11354,15 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -12053,23 +11370,23 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -12080,79 +11397,15 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Function_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_InformationLink_class( +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -12186,75 +11439,49 @@ pattern createObject_FAMTerminator_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -12288,88 +11515,178 @@ pattern createObject_FunctionalInterface_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); -} -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } ////////// @@ -12528,23 +11845,23 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12572,22 +11889,22 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); @@ -12616,21 +11933,21 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12658,21 +11975,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12700,21 +12017,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12742,21 +12059,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12784,23 +12101,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12828,23 +12145,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12872,25 +12189,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12960,21 +12277,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -13656,39 +12973,39 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -13699,211 +13016,211 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class( +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -13911,84 +13228,84 @@ pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); -} -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); -} -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } ////////// @@ -14147,23 +13464,23 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -14191,23 +13508,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -14235,21 +13550,21 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -14277,21 +13592,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -14319,21 +13634,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -14361,21 +13676,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -14403,23 +13718,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -14447,23 +13762,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -14491,25 +13806,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -14535,69 +13850,6 @@ private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpr */ private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfFunctionType_enum(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers @@ -14649,21 +13901,38 @@ private pattern mayInRelationinterface_reference_FunctionalElement( /** * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ - private pattern mustInRelationmodel_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); - } +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} /** - * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ - private pattern mayInRelationmodel_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); - } +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} /** * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ @@ -15145,91 +14414,44 @@ private pattern mayInRelationinterface_reference_FunctionalData( /** * Matcher for detecting tuples t where []type attribute Function(source,target) */ - private pattern mustInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []type attribute Function(source,target) - */ - private pattern mayInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } - -////////// -// 1.3 Relation Definition Indexers -////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - var_virtual0 == var_I; - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - var_virtual0 == var_In; - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_I); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - find mayEquivalent(problem, interpretation, var_virtual1, var_T); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_In); - find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - find mayEquivalent(problem, interpretation, var_virtual1, var_T); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, var_T, var_I) { @@ -15261,228 +14483,69 @@ private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_ find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); var_virtual1 == var_T; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) + var_T, var_I) { find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); }or{ find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) + var_T, var_I) { find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Root; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mayInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_Root); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Root; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Par; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_Func); - find mayInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mayInstanceOfFunction_class(problem,interpretation,var_Func); - find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_Par); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Par; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; } ////////// @@ -15515,12 +14578,26 @@ private pattern mustTransitiveContains(source,target) { ////////// // 2.1 Invalidated by WF Queries ////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} ////////// // 3. Unfinishedness Indexers ////////// // 3.1 Unfinishedness Measured by Multiplicity ////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); @@ -15530,10 +14607,24 @@ pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicPr check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} ////////// // 4. Refinement Indexers @@ -15547,11 +14638,11 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -15559,15 +14650,11 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -15575,104 +14662,82 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -15706,91 +14771,109 @@ pattern createObject_FunctionalInterface_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -15798,84 +14881,84 @@ pattern createObject_InformationLink_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); } ////////// @@ -16034,22 +15117,22 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); @@ -16078,23 +15161,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -16122,20 +15203,20 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); @@ -16164,21 +15245,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -16206,21 +15287,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -16248,21 +15329,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -16290,23 +15371,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -16334,23 +15415,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -16378,25 +15459,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -16422,69 +15503,6 @@ private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpr */ private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfFunctionType_enum(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers @@ -17162,23 +16180,15 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -17186,7 +16196,7 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -17194,72 +16204,74 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -17323,63 +16335,61 @@ pattern createObject_FAMTerminator_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -17417,84 +16427,84 @@ pattern createObject_FunctionalInterface_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } ////////// @@ -17653,22 +16663,22 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); @@ -17697,22 +16707,22 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); @@ -17741,21 +16751,21 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -17783,20 +16793,20 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); @@ -17826,9 +16836,9 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); @@ -17836,9 +16846,9 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); @@ -17867,21 +16877,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -17909,23 +16919,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -17953,23 +16963,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -17997,25 +17007,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -18085,20 +17095,20 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); @@ -18781,39 +17791,39 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -18824,154 +17834,6 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Function_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalOutput_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FAMTerminator_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalInput_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, @@ -19002,6 +17864,124 @@ pattern createObject_InformationLink_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, @@ -19032,87 +18012,117 @@ pattern createObject_FunctionalInterface_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } @@ -19272,23 +18282,23 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -19316,23 +18326,23 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -19360,21 +18370,21 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -19402,21 +18412,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -19444,21 +18454,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -19486,21 +18496,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -19528,23 +18538,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -19572,23 +18582,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -19616,25 +18626,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -19705,20 +18715,20 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(pro find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -20323,6 +19333,103 @@ private pattern mayInRelationtype_attribute_Function( ////////// // 1.3 Relation Definition Indexers ////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} ////////// // 1.4 Containment Indexer @@ -20354,6 +19461,11 @@ private pattern mustTransitiveContains(source,target) { ////////// // 2.1 Invalidated by WF Queries ////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} ////////// // 3. Unfinishedness Indexers @@ -20391,6 +19503,11 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} ////////// // 4. Refinement Indexers @@ -20400,39 +19517,39 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -20443,33 +19560,45 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -20519,6 +19648,96 @@ pattern createObject_Function_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, @@ -20549,190 +19768,88 @@ pattern createObject_FunctionalOutput_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalInput_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_InformationLink_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FAMTerminator_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); -} -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } ////////// @@ -20891,23 +20008,23 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -20935,23 +20052,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -20979,21 +20094,21 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -21021,21 +20136,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -21063,21 +20178,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -21105,21 +20220,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -21147,23 +20262,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -21191,23 +20306,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -21235,25 +20350,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -21279,69 +20394,6 @@ private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpr */ private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfFunctionType_enum(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers @@ -21393,21 +20445,38 @@ private pattern mayInRelationinterface_reference_FunctionalElement( /** * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ - private pattern mustInRelationmodel_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); - } +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} /** - * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ - private pattern mayInRelationmodel_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target); - } +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} /** * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ @@ -21889,346 +20958,43 @@ private pattern mayInRelationinterface_reference_FunctionalData( /** * Matcher for detecting tuples t where []type attribute Function(source,target) */ - private pattern mustInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []type attribute Function(source,target) - */ - private pattern mayInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target); - } - -////////// -// 1.3 Relation Definition Indexers -////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - var_virtual0 == var_I; - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - var_virtual0 == var_In; - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_I); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - find mayEquivalent(problem, interpretation, var_virtual1, var_T); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_In); - find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - find mayEquivalent(problem, interpretation, var_virtual1, var_T); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - var_virtual0 == var_I; - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - var_virtual0 == var_In; - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par); - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Root; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mayInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_Root); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Root; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Par; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_Func); - find mayInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mayInstanceOfFunction_class(problem,interpretation,var_Func); - find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_Par); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Par; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model( +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } +////////// +// 1.3 Relation Definition Indexers +////////// + ////////// // 1.4 Containment Indexer ////////// @@ -22259,17 +21025,21 @@ private pattern mustTransitiveContains(source,target) { ////////// // 2.1 Invalidated by WF Queries ////////// -pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I); -} ////////// // 3. Unfinishedness Indexers ////////// // 3.1 Unfinishedness Measured by Multiplicity ////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); @@ -22279,15 +21049,19 @@ pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicPr check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I); -} ////////// // 4. Refinement Indexers @@ -22297,11 +21071,7 @@ pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_term private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -22309,11 +21079,11 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -22321,52 +21091,90 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); -}or{ +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -22416,75 +21224,63 @@ pattern createObject_Function_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -22518,118 +21314,88 @@ pattern createObject_FunctionalOutput_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalInput_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); -} -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } ////////// @@ -22788,23 +21554,23 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -22832,23 +21598,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -22876,21 +21640,21 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -22918,21 +21682,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -22960,21 +21724,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -23002,21 +21766,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -23044,23 +21808,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -23088,23 +21852,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -23132,25 +21896,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -23176,69 +21940,6 @@ private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpr */ private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfFunctionType_enum(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers @@ -23290,21 +21991,38 @@ private pattern mayInRelationinterface_reference_FunctionalElement( /** * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ - private pattern mustInRelationmodel_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_model(problem,interpretation,source,target); - } +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} /** - * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ - private pattern mayInRelationmodel_reference_FunctionalElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_model(problem,interpretation,source,target); - } +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} /** * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ @@ -23786,346 +22504,43 @@ private pattern mayInRelationinterface_reference_FunctionalData( /** * Matcher for detecting tuples t where []type attribute Function(source,target) */ - private pattern mustInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_type(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []type attribute Function(source,target) - */ - private pattern mayInRelationtype_attribute_Function( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_type(problem,interpretation,source,target); - } - -////////// -// 1.3 Relation Definition Indexers -////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test xyz terminatorAndInformation -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - var_virtual0 == var_I; - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - var_virtual0 == var_In; - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_I); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - find mayEquivalent(problem, interpretation, var_virtual1, var_T); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mayInstanceOfInformationLink_class(problem,interpretation,var_I); - find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_In); - find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - find mayEquivalent(problem, interpretation, var_virtual1, var_T); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation( - problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); - find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); - var_virtual0 == var_I; - find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - // T is exported - // I is exported - find mustInstanceOfInformationLink_class(problem,interpretation,var_I); - find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); - var_virtual0 == var_In; - find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); - find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); - find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); - var_virtual1 == var_T; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test xyz type -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This); - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,var_This,_var__Par); - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,var_This,_var__Par); - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - find mayEquivalent(problem, interpretation, var_Target, var_virtual0); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_type( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This); - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This); - var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType); - var_Target == var_virtual0; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_This); - // type constraint is enforced by construction - // This is exported - // Target is exported - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,var_This,_var__Par); - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This); - var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType); - var_Target == var_virtual0; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test xyz rootElements -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Root; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mayInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_Root); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Model, var_Root) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInstanceOfFunction_class(problem,interpretation,var_Root); - // Model is exported - // Root is exported - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); - find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Root; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test xyz parent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Par; -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFunction_class(problem,interpretation,var_Func); - find mayInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mayInstanceOfFunction_class(problem,interpretation,var_Func); - find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_Par); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_Func, var_Par) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInstanceOfFunction_class(problem,interpretation,var_Par); - // Func is exported - // Par is exported - find mustInstanceOfFunction_class(problem,interpretation,var_Func); - find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); - find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); - var_virtual0 == var_Par; -} -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test xyz model -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_model( - problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_model( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_model( +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - var_This, var_Target) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); - // This is exported - // Target is exported - find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } +////////// +// 1.3 Relation Definition Indexers +////////// + ////////// // 1.4 Containment Indexer ////////// @@ -24156,17 +22571,21 @@ private pattern mustTransitiveContains(source,target) { ////////// // 2.1 Invalidated by WF Queries ////////// -pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(problem,interpretation,var_T,var_I); -} ////////// // 3. Unfinishedness Indexers ////////// // 3.1 Unfinishedness Measured by Multiplicity ////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); @@ -24176,15 +22595,19 @@ pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicPr check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, - var_T, var_I) -{ - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(problem,interpretation,var_T,var_I); -} ////////// // 4. Refinement Indexers @@ -24196,29 +22619,17 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find interpretation(problem,interpretation); find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -24230,98 +22641,74 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); -} -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -24355,63 +22742,61 @@ pattern createObject_FunctionalOutput_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -24445,88 +22830,118 @@ pattern createObject_FunctionalInput_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } - -////////// -// 4.2 Type refinement -////////// -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); -} -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } ////////// @@ -24686,22 +23101,22 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -24729,23 +23144,21 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -24773,20 +23186,20 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); @@ -24815,21 +23228,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -24857,21 +23270,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -24899,21 +23312,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -24941,23 +23354,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -24985,23 +23398,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -25029,25 +23442,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -25073,69 +23486,6 @@ private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpr */ private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfFunctionType_enum(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers @@ -25813,11 +24163,7 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -25829,19 +24175,19 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -25849,11 +24195,7 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); } pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( @@ -25932,33 +24274,75 @@ pattern createObject_FAMTerminator_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -25992,75 +24376,33 @@ pattern createObject_FunctionalInterface_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_InformationLink_class( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -26072,79 +24414,79 @@ pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:Partial find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } @@ -26282,1130 +24624,620 @@ private pattern isPrimitive(element: PrimitiveElement) { // 1.1.2 domain-specific Type Indexers ////////// /** - * An element must be an instance of type "EAttribute class". + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAttribute class"); +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAttribute class"); + Type.name(type,"FunctionalElement class"); } /** - * An element may be an instance of type "EAttribute class". + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEAttribute_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } /** - * An element must be an instance of type "EAnnotation class". + * An element must be an instance of type "FunctionalArchitectureModel class". */ -private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAnnotation class"); +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAnnotation class"); + Type.name(type,"FunctionalArchitectureModel class"); } /** - * An element may be an instance of type "EAnnotation class". + * An element may be an instance of type "FunctionalArchitectureModel class". */ -private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } /** - * An element must be an instance of type "EClass class". + * An element must be an instance of type "Function class". */ -private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClass class"); +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClass class"); + Type.name(type,"Function class"); } /** - * An element may be an instance of type "EClass class". + * An element may be an instance of type "Function class". */ -private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEClass_class(problem,interpretation,element); } +{ find mustInstanceOfFunction_class(problem,interpretation,element); } /** - * An element must be an instance of type "EClassifier class". + * An element must be an instance of type "FAMTerminator class". */ -private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClassifier class"); +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClassifier class"); + Type.name(type,"FAMTerminator class"); } /** - * An element may be an instance of type "EClassifier class". + * An element may be an instance of type "FAMTerminator class". */ -private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEClassifier_class(problem,interpretation,element); } +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } /** - * An element must be an instance of type "EDataType class". + * An element must be an instance of type "InformationLink class". */ -private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EDataType class"); +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EDataType class"); + Type.name(type,"InformationLink class"); } /** - * An element may be an instance of type "EDataType class". + * An element may be an instance of type "InformationLink class". */ -private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEDataType_class(problem,interpretation,element); } +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } /** - * An element must be an instance of type "EEnum class". + * An element must be an instance of type "FunctionalInterface class". */ -private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnum class"); +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnum class"); + Type.name(type,"FunctionalInterface class"); } /** - * An element may be an instance of type "EEnum class". + * An element may be an instance of type "FunctionalInterface class". */ -private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEEnum_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } /** - * An element must be an instance of type "EEnumLiteral class". + * An element must be an instance of type "FunctionalInput class". */ -private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnumLiteral class"); +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnumLiteral class"); + Type.name(type,"FunctionalInput class"); } /** - * An element may be an instance of type "EEnumLiteral class". + * An element may be an instance of type "FunctionalInput class". */ -private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } /** - * An element must be an instance of type "EModelElement class". + * An element must be an instance of type "FunctionalOutput class". */ -private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class"); +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class"); + Type.name(type,"FunctionalOutput class"); } /** - * An element may be an instance of type "EModelElement class". + * An element may be an instance of type "FunctionalOutput class". */ -private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEModelElement_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } /** - * An element must be an instance of type "ENamedElement class". + * An element must be an instance of type "FunctionalData class". */ -private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class"); +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class"); + Type.name(type,"FunctionalData class"); } /** - * An element may be an instance of type "ENamedElement class". + * An element may be an instance of type "FunctionalData class". */ -private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfENamedElement_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } /** - * An element must be an instance of type "EObject class". + * An element must be an instance of type "FunctionType enum". */ -private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EObject class"); +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EObject class"); + Type.name(type,"FunctionType enum"); } /** - * An element may be an instance of type "EObject class". + * An element may be an instance of type "FunctionType enum". */ -private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEObject_class(problem,interpretation,element); } +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } /** - * An element must be an instance of type "EOperation class". + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". */ -private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EOperation class"); +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EOperation class"); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); } /** - * An element may be an instance of type "EOperation class". + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". */ -private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEOperation_class(problem,interpretation,element); } +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } /** - * An element must be an instance of type "EPackage class". + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". */ -private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class"); +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class"); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); } /** - * An element may be an instance of type "EPackage class". + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". */ -private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEPackage_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// /** - * An element must be an instance of type "EParameter class". + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) */ -private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EParameter class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EParameter class". + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) */ -private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEParameter_class(problem,interpretation,element); } + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} /** - * An element must be an instance of type "EReference class". + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ -private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EReference class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EReference class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EReference class". + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ -private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEReference_class(problem,interpretation,element); } + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} /** - * An element must be an instance of type "EStructuralFeature class". + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ -private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStructuralFeature class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStructuralFeature class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EStructuralFeature class". + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) */ -private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ETypedElement class". - */ -private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypedElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypedElement class"); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); } - /** - * An element may be an instance of type "ETypedElement class". + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypedElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EStringToStringMapEntry class". - */ -private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStringToStringMapEntry class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStringToStringMapEntry class"); -} - -/** - * An element may be an instance of type "EStringToStringMapEntry class". - */ -private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EGenericType class". - */ -private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EGenericType class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EGenericType class"); -} - -/** - * An element may be an instance of type "EGenericType class". - */ -private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEGenericType_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ETypeParameter class". - */ -private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypeParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypeParameter class"); -} - -/** - * An element may be an instance of type "ETypeParameter class". - */ -private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class DefinedPart". - */ -private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class DefinedPart"); -} - -/** - * An element may be an instance of type "EModelElement class DefinedPart". - */ -private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class UndefinedPart". - */ -private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class UndefinedPart"); -} - -/** - * An element may be an instance of type "EModelElement class UndefinedPart". - */ -private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class DefinedPart"); -} - -/** - * An element may be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class UndefinedPart". - */ -private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class UndefinedPart"); -} - -/** - * An element may be an instance of type "ENamedElement class UndefinedPart". - */ -private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class DefinedPart". - */ -private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class DefinedPart"); -} - -/** - * An element may be an instance of type "EPackage class DefinedPart". - */ -private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class UndefinedPart". - */ -private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class UndefinedPart"); -} - -/** - * An element may be an instance of type "EPackage class UndefinedPart". - */ -private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); } - -////////// -// 1.2 Relation Declaration Indexers -////////// -/** - * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target) - */ -private pattern mustInRelationeAttributeType_reference_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target) + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mayInRelationeAttributeType_reference_EAttribute( +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27414,33 +25246,34 @@ private pattern mayInRelationeAttributeType_reference_EAttribute( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - find mayInstanceOfEDataType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []details reference EAnnotation(source,target) + * Matcher for detecting tuples t where []subElements reference Function(source,target) */ -private pattern mustInRelationdetails_reference_EAnnotation( +private pattern mustInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>details reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>subElements reference Function(source,target) */ -private pattern mayInRelationdetails_reference_EAnnotation( +private pattern mayInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27449,34 +25282,38 @@ private pattern mayInRelationdetails_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target) + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) */ -private pattern mustInRelationeModelElement_reference_EAnnotation( +private pattern mustInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) */ -private pattern mayInRelationeModelElement_reference_EAnnotation( +private pattern mayInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27485,38 +25322,42 @@ private pattern mayInRelationeModelElement_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEModelElement_class(problem,interpretation,target); + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []contents reference EAnnotation(source,target) + * Matcher for detecting tuples t where []from reference InformationLink(source,target) */ -private pattern mustInRelationcontents_reference_EAnnotation( +private pattern mustInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) */ -private pattern mayInRelationcontents_reference_EAnnotation( +private pattern mayInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27525,65 +25366,38 @@ private pattern mayInRelationcontents_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); + neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []references reference EAnnotation(source,target) - */ -private pattern mustInRelationreferences_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>references reference EAnnotation(source,target) - */ -private pattern mayInRelationreferences_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); -} or { - find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where []to reference InformationLink(source,target) */ -private pattern mustInRelationeSuperTypes_reference_EClass( +private pattern mustInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) */ -private pattern mayInRelationeSuperTypes_reference_EClass( +private pattern mayInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27592,29 +25406,33 @@ private pattern mayInRelationeSuperTypes_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target); + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eOperations reference EClass(source,target) + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) */ -private pattern mustInRelationeOperations_reference_EClass( +private pattern mustInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eOperations reference EClass(source,target) + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) */ -private pattern mayInRelationeOperations_reference_EClass( +private pattern mayInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27623,11 +25441,11 @@ private pattern mayInRelationeOperations_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference to the target, // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_); + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents @@ -27635,181 +25453,26 @@ private pattern mayInRelationeOperations_reference_EClass( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target) - */ -private pattern mustInRelationeAllAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target) - */ -private pattern mayInRelationeAllAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target) - */ -private pattern mustInRelationeAllReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target) - */ -private pattern mayInRelationeAllReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eReferences reference EClass(source,target) - */ -private pattern mustInRelationeReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eReferences reference EClass(source,target) - */ -private pattern mayInRelationeReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAttributes reference EClass(source,target) - */ -private pattern mustInRelationeAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target) - */ -private pattern mayInRelationeAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target) - */ -private pattern mustInRelationeAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target) - */ -private pattern mayInRelationeAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target); + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target) + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) */ -private pattern mustInRelationeAllOperations_reference_EClass( +private pattern mustInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target) + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) */ -private pattern mayInRelationeAllOperations_reference_EClass( +private pattern mayInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27818,29 +25481,42 @@ private pattern mayInRelationeAllOperations_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target); + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target) + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) */ -private pattern mustInRelationeAllStructuralFeatures_reference_EClass( +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target) + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) */ -private pattern mayInRelationeAllStructuralFeatures_reference_EClass( +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27849,29 +25525,33 @@ private pattern mayInRelationeAllStructuralFeatures_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); } or { - find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target); + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mustInRelationeAllSuperTypes_reference_EClass( +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mayInRelationeAllSuperTypes_reference_EClass( +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27880,29 +25560,38 @@ private pattern mayInRelationeAllSuperTypes_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target) + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) */ -private pattern mustInRelationeIDAttribute_reference_EClass( +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target) + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) */ -private pattern mayInRelationeIDAttribute_reference_EClass( +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27911,46 +25600,15 @@ private pattern mayInRelationeIDAttribute_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); check(numberOfExistingReferences < 1); -} or { - find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target) - */ -private pattern mustInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target) - */ -private pattern mayInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference to the target, // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_); + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents @@ -27958,26 +25616,26 @@ private pattern mayInRelationeStructuralFeatures_reference_EClass( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) */ -private pattern mustInRelationeGenericSuperTypes_reference_EClass( +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) */ -private pattern mayInRelationeGenericSuperTypes_reference_EClass( +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -27986,34 +25644,38 @@ private pattern mayInRelationeGenericSuperTypes_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); + neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where []type attribute Function(source,target) */ -private pattern mustInRelationeAllGenericSuperTypes_reference_EClass( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where <>type attribute Function(source,target) */ -private pattern mayInRelationeAllGenericSuperTypes_reference_EClass( +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -28022,895 +25684,1060 @@ private pattern mayInRelationeAllGenericSuperTypes_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target); + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } -/** - * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target) - */ -private pattern mustInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target) - */ -private pattern mayInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target) - */ -private pattern mustInRelationeTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target) - */ -private pattern mayInRelationeTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target) - */ -private pattern mustInRelationeLiterals_reference_EEnum( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target) - */ -private pattern mayInRelationeLiterals_reference_EEnum( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnum_class(problem,interpretation,source); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target) - */ -private pattern mustInRelationeEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target) - */ -private pattern mayInRelationeEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - find mayInstanceOfEEnum_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target) - */ -private pattern mustInRelationeAnnotations_reference_EModelElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -/** - * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target) - */ -private pattern mayInRelationeAnnotations_reference_EModelElement( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEModelElement_class(problem,interpretation,source); - find mayInstanceOfEAnnotation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target) - */ -private pattern mustInRelationeContainingClass_reference_EOperation( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target) - */ -private pattern mayInRelationeContainingClass_reference_EOperation( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target) - */ -private pattern mustInRelationeTypeParameters_reference_EOperation( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target) - */ -private pattern mayInRelationeTypeParameters_reference_EOperation( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eParameters reference EOperation(source,target) - */ -private pattern mustInRelationeParameters_reference_EOperation( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target) - */ -private pattern mayInRelationeParameters_reference_EOperation( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEParameter_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target) - */ -private pattern mustInRelationeExceptions_reference_EOperation( +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target) - */ -private pattern mayInRelationeExceptions_reference_EOperation( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); -} or { - find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target) - */ -private pattern mustInRelationeGenericExceptions_reference_EOperation( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target) - */ -private pattern mayInRelationeGenericExceptions_reference_EOperation( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target) - */ -private pattern mustInRelationeClassifiers_reference_EPackage( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target) - */ -private pattern mayInRelationeClassifiers_reference_EPackage( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target) - */ -private pattern mustInRelationeSubpackages_reference_EPackage( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target) - */ -private pattern mayInRelationeSubpackages_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target) - */ -private pattern mustInRelationeSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target) - */ -private pattern mayInRelationeSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eOperation reference EParameter(source,target) - */ -private pattern mustInRelationeOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target) - */ -private pattern mayInRelationeOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEParameter_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eOpposite reference EReference(source,target) - */ -private pattern mustInRelationeOpposite_reference_EReference( +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target) - */ -private pattern mayInRelationeOpposite_reference_EReference( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target) - */ -private pattern mustInRelationeReferenceType_reference_EReference( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target) - */ -private pattern mayInRelationeReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + LogicProblem.elements(problem,element); } or { - find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target); + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); } -/** - * Matcher for detecting tuples t where []eKeys reference EReference(source,target) - */ -private pattern mustInRelationeKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); } -/** - * Matcher for detecting tuples t where <>eKeys reference EReference(source,target) - */ -private pattern mayInRelationeKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); } or { - find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target); + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); } + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// /** - * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target) + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInRelationeContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); } + /** - * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target) + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInRelationeContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eType reference ETypedElement(source,target) + * An element must be an instance of type "FunctionalArchitectureModel class". */ -private pattern mustInRelationeType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); } + /** - * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target) + * An element may be an instance of type "FunctionalArchitectureModel class". */ -private pattern mayInRelationeType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target) + * An element must be an instance of type "Function class". */ -private pattern mustInRelationeGenericType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); } + /** - * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target) + * An element may be an instance of type "Function class". */ -private pattern mayInRelationeGenericType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target) + * An element must be an instance of type "FAMTerminator class". */ -private pattern mustInRelationeUpperBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); } + /** - * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target) + * An element may be an instance of type "FAMTerminator class". */ -private pattern mayInRelationeUpperBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); } + /** - * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target) + * An element may be an instance of type "InformationLink class". */ -private pattern mustInRelationeTypeArguments_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); } + /** - * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target) + * An element may be an instance of type "FunctionalInterface class". */ -private pattern mayInRelationeTypeArguments_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); } + /** - * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target) + * An element may be an instance of type "FunctionalOutput class". */ -private pattern mustInRelationeRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); } + /** - * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target) + * An element may be an instance of type "FunctionalData class". */ -private pattern mayInRelationeRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target); + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); } + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// /** - * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) */ -private pattern mustInRelationeLowerBound_reference_EGenericType( +private pattern mustInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) */ -private pattern mayInRelationeLowerBound_reference_EGenericType( +private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -28919,38 +26746,42 @@ private pattern mayInRelationeLowerBound_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target) + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ -private pattern mustInRelationeTypeParameter_reference_EGenericType( +private pattern mustInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ -private pattern mayInRelationeTypeParameter_reference_EGenericType( +private pattern mayInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -28959,33 +26790,33 @@ private pattern mayInRelationeTypeParameter_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target) + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ -private pattern mustInRelationeClassifier_reference_EGenericType( +private pattern mustInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target) + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) */ -private pattern mayInRelationeClassifier_reference_EGenericType( +private pattern mayInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -28994,33 +26825,38 @@ private pattern mayInRelationeClassifier_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target) + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mustInRelationeBounds_reference_ETypeParameter( +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target) + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mayInRelationeBounds_reference_ETypeParameter( +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29029,34 +26865,34 @@ private pattern mayInRelationeBounds_reference_ETypeParameter( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfETypeParameter_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []iD attribute EAttribute(source,target) + * Matcher for detecting tuples t where []subElements reference Function(source,target) */ -private pattern mustInRelationiD_attribute_EAttribute( +private pattern mustInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target) + * Matcher for detecting tuples t where <>subElements reference Function(source,target) */ -private pattern mayInRelationiD_attribute_EAttribute( +private pattern mayInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29065,33 +26901,38 @@ private pattern mayInRelationiD_attribute_EAttribute( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target); + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []source attribute EAnnotation(source,target) + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) */ -private pattern mustInRelationsource_attribute_EAnnotation( +private pattern mustInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target) + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) */ -private pattern mayInRelationsource_attribute_EAnnotation( +private pattern mayInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29100,33 +26941,42 @@ private pattern mayInRelationsource_attribute_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - StringElement(target); + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target); + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []abstract attribute EClass(source,target) + * Matcher for detecting tuples t where []from reference InformationLink(source,target) */ -private pattern mustInRelationabstract_attribute_EClass( +private pattern mustInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>abstract attribute EClass(source,target) + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) */ -private pattern mayInRelationabstract_attribute_EClass( +private pattern mayInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29135,33 +26985,38 @@ private pattern mayInRelationabstract_attribute_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target); + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []interface attribute EClass(source,target) + * Matcher for detecting tuples t where []to reference InformationLink(source,target) */ -private pattern mustInRelationinterface_attribute_EClass( +private pattern mustInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>interface attribute EClass(source,target) + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) */ -private pattern mayInRelationinterface_attribute_EClass( +private pattern mayInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29170,33 +27025,33 @@ private pattern mayInRelationinterface_attribute_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target); + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target) + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) */ -private pattern mustInRelationinstanceClassName_attribute_EClassifier( +private pattern mustInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target) + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) */ -private pattern mayInRelationinstanceClassName_attribute_EClassifier( +private pattern mayInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29205,33 +27060,38 @@ private pattern mayInRelationinstanceClassName_attribute_EClassifier( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target); + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target) + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) */ -private pattern mustInRelationinstanceTypeName_attribute_EClassifier( +private pattern mustInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target) + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) */ -private pattern mayInRelationinstanceTypeName_attribute_EClassifier( +private pattern mayInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29240,33 +27100,42 @@ private pattern mayInRelationinstanceTypeName_attribute_EClassifier( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target); + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []serializable attribute EDataType(source,target) + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) */ -private pattern mustInRelationserializable_attribute_EDataType( +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target) + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) */ -private pattern mayInRelationserializable_attribute_EDataType( +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29275,33 +27144,33 @@ private pattern mayInRelationserializable_attribute_EDataType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEDataType_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); } or { - find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target); + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target) + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mustInRelationvalue_attribute_EEnumLiteral( +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target) + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mayInRelationvalue_attribute_EEnumLiteral( +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29310,68 +27179,38 @@ private pattern mayInRelationvalue_attribute_EEnumLiteral( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []name attribute ENamedElement(source,target) + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) */ -private pattern mustInRelationname_attribute_ENamedElement( +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target) + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) */ -private pattern mayInRelationname_attribute_ENamedElement( +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29380,33 +27219,42 @@ private pattern mayInRelationname_attribute_ENamedElement( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfENamedElement_class(problem,interpretation,source); - StringElement(target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) */ -private pattern mustInRelationnsURI_attribute_EPackage( +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) */ -private pattern mayInRelationnsURI_attribute_EPackage( +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29415,33 +27263,38 @@ private pattern mayInRelationnsURI_attribute_EPackage( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target) + * Matcher for detecting tuples t where []type attribute Function(source,target) */ -private pattern mustInRelationnsPrefix_attribute_EPackage( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target) + * Matcher for detecting tuples t where <>type attribute Function(source,target) */ -private pattern mayInRelationnsPrefix_attribute_EPackage( +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -29450,2286 +27303,2026 @@ private pattern mayInRelationnsPrefix_attribute_EPackage( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target); + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } -/** - * Matcher for detecting tuples t where []containment attribute EReference(source,target) - */ -private pattern mustInRelationcontainment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); } -/** - * Matcher for detecting tuples t where <>containment attribute EReference(source,target) - */ -private pattern mayInRelationcontainment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target); + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); } -/** - * Matcher for detecting tuples t where []container attribute EReference(source,target) - */ -private pattern mustInRelationcontainer_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where <>container attribute EReference(source,target) - */ -private pattern mayInRelationcontainer_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); check(numberOfExistingReferences < 1); -} or { - find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target) - */ -private pattern mustInRelationresolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target) - */ -private pattern mayInRelationresolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -/** - * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationchangeable_attribute_EStructuralFeature( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationchangeable_attribute_EStructuralFeature( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationvolatile_attribute_EStructuralFeature( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationvolatile_attribute_EStructuralFeature( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationtransient_attribute_EStructuralFeature( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationtransient_attribute_EStructuralFeature( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationunsettable_attribute_EStructuralFeature( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationunsettable_attribute_EStructuralFeature( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationderived_attribute_EStructuralFeature( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationderived_attribute_EStructuralFeature( +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target) - */ -private pattern mustInRelationordered_attribute_ETypedElement( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target) - */ -private pattern mayInRelationordered_attribute_ETypedElement( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target) - */ -private pattern mustInRelationunique_attribute_ETypedElement( + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target) - */ -private pattern mayInRelationunique_attribute_ETypedElement( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target) - */ -private pattern mustInRelationlowerBound_attribute_ETypedElement( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target) - */ -private pattern mayInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); } or { - find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target); + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); } + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// /** - * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target) + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); } + /** - * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target) + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []many attribute ETypedElement(source,target) + * An element must be an instance of type "FunctionalArchitectureModel class". */ -private pattern mustInRelationmany_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); } + /** - * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target) + * An element may be an instance of type "FunctionalArchitectureModel class". */ -private pattern mayInRelationmany_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []required attribute ETypedElement(source,target) + * An element must be an instance of type "Function class". */ -private pattern mustInRelationrequired_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); } + /** - * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target) + * An element may be an instance of type "Function class". */ -private pattern mayInRelationrequired_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target) + * An element must be an instance of type "FAMTerminator class". */ -private pattern mustInRelationkey_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); } + /** - * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target) + * An element may be an instance of type "FAMTerminator class". */ -private pattern mayInRelationkey_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target) + * An element must be an instance of type "InformationLink class". */ -private pattern mustInRelationvalue_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); } + /** - * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target) + * An element may be an instance of type "InformationLink class". */ -private pattern mayInRelationvalue_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target); + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); } -////////// -// 1.3 Relation Definition Indexers -////////// - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or - - { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or - - { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or - - { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); -} - -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustInstanceOfEAttribute_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustInstanceOfEReference_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); } -pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); } -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnum_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAttribute_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClass_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClassifier_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEOperation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEReference_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAnnotation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfETypedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEDataType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEGenericType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfETypeParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); } -pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); } -pattern createObject_EAttribute_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); } -pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation( + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation"); - find mustInstanceOfEModelElement_class(problem,interpretation,container); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EAnnotation_class( +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); } -pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EReference_class( +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); } -pattern createObject_EObject_class_by_contents_reference_EAnnotation( +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EObject_class( +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); } -pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter( +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EParameter_class( +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); } -pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage( +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EPackage_class_UndefinedPart( +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EStringToStringMapEntry_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); } -pattern createObject_EEnum_class( +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral( +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral"); - find mustInstanceOfEEnum_class(problem,interpretation,container); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); } -pattern createObject_EEnumLiteral_class( +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass( +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); } -pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation( +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement( +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement"); - find mustInstanceOfETypedElement_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } -pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType( +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType( +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } -pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType( +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter( +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter"); - find mustInstanceOfETypeParameter_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } -pattern createObject_EGenericType_class( +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation( +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); } -pattern createObject_EOperation_class( +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } -pattern createObject_EDataType_class( +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } -pattern createObject_EClass_class( +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier( +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier"); - find mustInstanceOfEClassifier_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation( +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_ETypeParameter_class( +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } ////////// -// 4.2 Type refinement +// 1.3 Relation Definition Indexers ////////// -pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); -} -pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); -} -pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); -} -pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); -} -pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); -} -pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); -} -pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); -} -pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); -} ////////// -// 4.3 Relation refinement +// 1.4 Containment Indexer ////////// -pattern refineRelation_eAttributeType_reference_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - find mustInstanceOfEDataType_class(problem,interpretation,to); - find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); - neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); -} -pattern refineRelation_references_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - find mustInstanceOfEObject_class(problem,interpretation,to); - find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); } -pattern refineRelation_eSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); } -pattern refineRelation_eAllAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -pattern refineRelation_eAllReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -pattern refineRelation_eReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -pattern refineRelation_eAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEOperation_class(problem,interpretation,to); - find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,to); - find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -pattern refineRelation_eAllGenericSuperTypes_reference_EClass( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEGenericType_class(problem,interpretation,to); - find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_eExceptions_reference_EOperation( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEOperation_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); - neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_eOpposite_reference_EReference( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_eReferenceType_reference_EReference( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_eKeys_reference_EReference( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_eType_reference_ETypedElement( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_eRawType_reference_EGenericType( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_eTypeParameter_reference_EGenericType( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfETypeParameter_class(problem,interpretation,to); - find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_eClassifier_reference_EGenericType( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_iD_attribute_EAttribute( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to); - neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_source_attribute_EAnnotation( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - StringElement(to); - find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_abstract_attribute_EClass( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_interface_attribute_EClass( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_instanceClassName_attribute_EClassifier( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_instanceTypeName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineRelation_serializable_attribute_EDataType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEDataType_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to); - neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineRelation_value_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } -pattern refineRelation_literal_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - StringElement(to); - find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineRelation_name_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfENamedElement_class(problem,interpretation,from); - StringElement(to); - find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to); - neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineRelation_nsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineRelation_nsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } -pattern refineRelation_containment_attribute_EReference( + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -pattern refineRelation_container_attribute_EReference( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -pattern refineRelation_resolveProxies_attribute_EReference( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); -} -pattern refineRelation_changeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_volatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_transient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - StringElement(to); - find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_unsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_derived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_ordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_unique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_lowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_upperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_many_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_required_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_key_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); -} -pattern refineRelation_value_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" @@ -31837,22 +29430,22 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); @@ -31881,22 +29474,20 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); @@ -32010,8 +29601,8 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); @@ -32020,8 +29611,8 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); @@ -32051,9 +29642,9 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); @@ -32061,9 +29652,9 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); @@ -32095,8 +29686,8 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); @@ -32106,8 +29697,8 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); @@ -32137,23 +29728,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -32181,24 +29772,24 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); @@ -32225,69 +29816,6 @@ private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpr */ private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfFunctionType_enum(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers @@ -32965,11 +30493,11 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -32977,36 +30505,74 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); -}or{ +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, @@ -33098,121 +30664,75 @@ pattern createObject_FAMTerminator_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalInput_class( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -33220,14 +30740,25 @@ pattern createObject_FunctionalOutput_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } @@ -33235,10 +30766,10 @@ pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation: find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } @@ -33248,55 +30779,44 @@ pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:Pa find mayInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); -} -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } @@ -33456,23 +30976,23 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -33501,22 +31021,20 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or @@ -33545,20 +31063,20 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or @@ -33586,21 +31104,21 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or @@ -33629,20 +31147,20 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -33670,21 +31188,21 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or @@ -33712,23 +31230,23 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -33756,23 +31274,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -33800,25 +31318,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -33844,69 +31362,6 @@ private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpr */ private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfFunctionType_enum(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers @@ -34507,6 +31962,103 @@ private pattern mayInRelationtype_attribute_Function( ////////// // 1.3 Relation Definition Indexers ////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} ////////// // 1.4 Containment Indexer @@ -34538,6 +32090,11 @@ private pattern mustTransitiveContains(source,target) { ////////// // 2.1 Invalidated by WF Queries ////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} ////////// // 3. Unfinishedness Indexers @@ -34575,6 +32132,11 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} ////////// // 4. Refinement Indexers @@ -34584,11 +32146,11 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -34596,64 +32158,72 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -34687,91 +32257,105 @@ pattern createObject_FunctionalOutput_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); - find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); - find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_InformationLink_class( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); - find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -34805,118 +32389,88 @@ pattern createObject_FunctionalInput_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FAMTerminator_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunction_class(problem,interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunction_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } ////////// @@ -35053,1130 +32607,436 @@ private pattern isPrimitive(element: PrimitiveElement) { // 1.1.2 domain-specific Type Indexers ////////// /** - * An element must be an instance of type "EAttribute class". + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAttribute class"); +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAttribute class"); + Type.name(type,"FunctionalElement class"); } /** - * An element may be an instance of type "EAttribute class". + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEAttribute_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } /** - * An element must be an instance of type "EAnnotation class". + * An element must be an instance of type "FunctionalArchitectureModel class". */ -private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAnnotation class"); +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAnnotation class"); + Type.name(type,"FunctionalArchitectureModel class"); } /** - * An element may be an instance of type "EAnnotation class". + * An element may be an instance of type "FunctionalArchitectureModel class". */ -private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } /** - * An element must be an instance of type "EClass class". + * An element must be an instance of type "Function class". */ -private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClass class"); +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClass class"); + Type.name(type,"Function class"); } /** - * An element may be an instance of type "EClass class". + * An element may be an instance of type "Function class". */ -private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEClass_class(problem,interpretation,element); } +{ find mustInstanceOfFunction_class(problem,interpretation,element); } /** - * An element must be an instance of type "EClassifier class". + * An element must be an instance of type "FAMTerminator class". */ -private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClassifier class"); +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClassifier class"); + Type.name(type,"FAMTerminator class"); } /** - * An element may be an instance of type "EClassifier class". + * An element may be an instance of type "FAMTerminator class". */ -private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEClassifier_class(problem,interpretation,element); } +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } /** - * An element must be an instance of type "EDataType class". + * An element must be an instance of type "InformationLink class". */ -private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EDataType class"); +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EDataType class"); + Type.name(type,"InformationLink class"); } /** - * An element may be an instance of type "EDataType class". + * An element may be an instance of type "InformationLink class". */ -private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEDataType_class(problem,interpretation,element); } +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } /** - * An element must be an instance of type "EEnum class". + * An element must be an instance of type "FunctionalInterface class". */ -private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnum class"); +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnum class"); + Type.name(type,"FunctionalInterface class"); } /** - * An element may be an instance of type "EEnum class". + * An element may be an instance of type "FunctionalInterface class". */ -private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEEnum_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } /** - * An element must be an instance of type "EEnumLiteral class". + * An element must be an instance of type "FunctionalInput class". */ -private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnumLiteral class"); +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnumLiteral class"); + Type.name(type,"FunctionalInput class"); } /** - * An element may be an instance of type "EEnumLiteral class". + * An element may be an instance of type "FunctionalInput class". */ -private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } /** - * An element must be an instance of type "EModelElement class". + * An element must be an instance of type "FunctionalOutput class". */ -private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class"); +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class"); + Type.name(type,"FunctionalOutput class"); } /** - * An element may be an instance of type "EModelElement class". + * An element may be an instance of type "FunctionalOutput class". */ -private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEModelElement_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } /** - * An element must be an instance of type "ENamedElement class". + * An element must be an instance of type "FunctionalData class". */ -private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class"); +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class"); + Type.name(type,"FunctionalData class"); } /** - * An element may be an instance of type "ENamedElement class". + * An element may be an instance of type "FunctionalData class". */ -private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfENamedElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EObject class". - */ -private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EObject class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EObject class"); -} - -/** - * An element may be an instance of type "EObject class". - */ -private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEObject_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EOperation class". - */ -private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EOperation class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EOperation class"); -} - -/** - * An element may be an instance of type "EOperation class". - */ -private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEOperation_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class". - */ -private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class"); -} - -/** - * An element may be an instance of type "EPackage class". - */ -private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EParameter class". - */ -private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EParameter class"); -} - -/** - * An element may be an instance of type "EParameter class". - */ -private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEParameter_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EReference class". - */ -private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EReference class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EReference class"); -} - -/** - * An element may be an instance of type "EReference class". - */ -private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEReference_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EStructuralFeature class". - */ -private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStructuralFeature class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStructuralFeature class"); -} - -/** - * An element may be an instance of type "EStructuralFeature class". - */ -private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ETypedElement class". - */ -private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypedElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypedElement class"); -} - -/** - * An element may be an instance of type "ETypedElement class". - */ -private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypedElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EStringToStringMapEntry class". - */ -private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStringToStringMapEntry class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStringToStringMapEntry class"); -} - -/** - * An element may be an instance of type "EStringToStringMapEntry class". - */ -private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EGenericType class". - */ -private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EGenericType class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EGenericType class"); -} - -/** - * An element may be an instance of type "EGenericType class". - */ -private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEGenericType_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ETypeParameter class". - */ -private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypeParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypeParameter class"); -} - -/** - * An element may be an instance of type "ETypeParameter class". - */ -private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class DefinedPart". - */ -private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class DefinedPart"); -} - -/** - * An element may be an instance of type "EModelElement class DefinedPart". - */ -private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class UndefinedPart". - */ -private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class UndefinedPart"); -} - -/** - * An element may be an instance of type "EModelElement class UndefinedPart". - */ -private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class DefinedPart"); -} - -/** - * An element may be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class UndefinedPart". - */ -private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class UndefinedPart"); -} - -/** - * An element may be an instance of type "ENamedElement class UndefinedPart". - */ -private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class DefinedPart". - */ -private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class DefinedPart"); -} - -/** - * An element may be an instance of type "EPackage class DefinedPart". - */ -private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); } +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } /** - * An element must be an instance of type "EPackage class UndefinedPart". + * An element must be an instance of type "FunctionType enum". */ -private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class UndefinedPart"); +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class UndefinedPart"); + Type.name(type,"FunctionType enum"); } /** - * An element may be an instance of type "EPackage class UndefinedPart". + * An element may be an instance of type "FunctionType enum". */ -private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); } +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers ////////// /** - * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) */ -private pattern mustInRelationeAttributeType_reference_EAttribute( +private pattern mustInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) */ -private pattern mayInRelationeAttributeType_reference_EAttribute( +private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36185,33 +33045,42 @@ private pattern mayInRelationeAttributeType_reference_EAttribute( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - find mayInstanceOfEDataType_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []details reference EAnnotation(source,target) + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ -private pattern mustInRelationdetails_reference_EAnnotation( +private pattern mustInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>details reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ -private pattern mayInRelationdetails_reference_EAnnotation( +private pattern mayInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36220,34 +33089,33 @@ private pattern mayInRelationdetails_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target) + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ -private pattern mustInRelationeModelElement_reference_EAnnotation( +private pattern mustInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) */ -private pattern mayInRelationeModelElement_reference_EAnnotation( +private pattern mayInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36256,11 +33124,11 @@ private pattern mayInRelationeModelElement_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEModelElement_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents @@ -36268,26 +33136,26 @@ private pattern mayInRelationeModelElement_reference_EAnnotation( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []contents reference EAnnotation(source,target) + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mustInRelationcontents_reference_EAnnotation( +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mayInRelationcontents_reference_EAnnotation( +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36296,34 +33164,34 @@ private pattern mayInRelationcontents_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []references reference EAnnotation(source,target) + * Matcher for detecting tuples t where []subElements reference Function(source,target) */ -private pattern mustInRelationreferences_reference_EAnnotation( +private pattern mustInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>references reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>subElements reference Function(source,target) */ -private pattern mayInRelationreferences_reference_EAnnotation( +private pattern mayInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36332,29 +33200,38 @@ private pattern mayInRelationreferences_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) */ -private pattern mustInRelationeSuperTypes_reference_EClass( +private pattern mustInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) */ -private pattern mayInRelationeSuperTypes_reference_EClass( +private pattern mayInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36363,29 +33240,42 @@ private pattern mayInRelationeSuperTypes_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target); + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eOperations reference EClass(source,target) + * Matcher for detecting tuples t where []from reference InformationLink(source,target) */ -private pattern mustInRelationeOperations_reference_EClass( +private pattern mustInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eOperations reference EClass(source,target) + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) */ -private pattern mayInRelationeOperations_reference_EClass( +private pattern mayInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36394,38 +33284,38 @@ private pattern mayInRelationeOperations_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); + neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target) + * Matcher for detecting tuples t where []to reference InformationLink(source,target) */ -private pattern mustInRelationeAllAttributes_reference_EClass( +private pattern mustInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target) + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) */ -private pattern mayInRelationeAllAttributes_reference_EClass( +private pattern mayInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36434,29 +33324,33 @@ private pattern mayInRelationeAllAttributes_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target); + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target) + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) */ -private pattern mustInRelationeAllReferences_reference_EClass( +private pattern mustInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target) + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) */ -private pattern mayInRelationeAllReferences_reference_EClass( +private pattern mayInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36465,29 +33359,38 @@ private pattern mayInRelationeAllReferences_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target); + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eReferences reference EClass(source,target) + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) */ -private pattern mustInRelationeReferences_reference_EClass( +private pattern mustInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eReferences reference EClass(source,target) + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) */ -private pattern mayInRelationeReferences_reference_EClass( +private pattern mayInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36496,29 +33399,42 @@ private pattern mayInRelationeReferences_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target); + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAttributes reference EClass(source,target) + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) */ -private pattern mustInRelationeAttributes_reference_EClass( +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target) + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) */ -private pattern mayInRelationeAttributes_reference_EClass( +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36527,29 +33443,33 @@ private pattern mayInRelationeAttributes_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); } or { - find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target); + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target) + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mustInRelationeAllContainments_reference_EClass( +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target) + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mayInRelationeAllContainments_reference_EClass( +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36558,60 +33478,38 @@ private pattern mayInRelationeAllContainments_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target) - */ -private pattern mustInRelationeAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target) - */ -private pattern mayInRelationeAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target) + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) */ -private pattern mustInRelationeAllStructuralFeatures_reference_EClass( +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target) + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) */ -private pattern mayInRelationeAllStructuralFeatures_reference_EClass( +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36620,29 +33518,42 @@ private pattern mayInRelationeAllStructuralFeatures_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) */ -private pattern mustInRelationeAllSuperTypes_reference_EClass( +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) */ -private pattern mayInRelationeAllSuperTypes_reference_EClass( +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36651,29 +33562,38 @@ private pattern mayInRelationeAllSuperTypes_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target) + * Matcher for detecting tuples t where []type attribute Function(source,target) */ -private pattern mustInRelationeIDAttribute_reference_EClass( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target) + * Matcher for detecting tuples t where <>type attribute Function(source,target) */ -private pattern mayInRelationeIDAttribute_reference_EClass( +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -36682,780 +33602,1094 @@ private pattern mayInRelationeIDAttribute_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target); + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } -/** - * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target) - */ -private pattern mustInRelationeStructuralFeatures_reference_EClass( + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target) - */ -private pattern mayInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; } -/** - * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeGenericSuperTypes_reference_EClass( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); } -/** - * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeGenericSuperTypes_reference_EClass( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; } -/** - * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) { + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); -} or { - find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target) - */ -private pattern mustInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target) - */ -private pattern mayInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -/** - * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target) - */ -private pattern mustInRelationeTypeParameters_reference_EClassifier( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target) - */ -private pattern mayInRelationeTypeParameters_reference_EClassifier( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target) - */ -private pattern mustInRelationeLiterals_reference_EEnum( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target) - */ -private pattern mayInRelationeLiterals_reference_EEnum( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnum_class(problem,interpretation,source); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target) - */ -private pattern mustInRelationeEnum_reference_EEnumLiteral( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target) - */ -private pattern mayInRelationeEnum_reference_EEnumLiteral( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - find mayInstanceOfEEnum_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target) - */ -private pattern mustInRelationeAnnotations_reference_EModelElement( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target) - */ -private pattern mayInRelationeAnnotations_reference_EModelElement( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEModelElement_class(problem,interpretation,source); - find mayInstanceOfEAnnotation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target) - */ -private pattern mustInRelationeContainingClass_reference_EOperation( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target) - */ -private pattern mayInRelationeContainingClass_reference_EOperation( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target) - */ -private pattern mustInRelationeTypeParameters_reference_EOperation( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target) - */ -private pattern mayInRelationeTypeParameters_reference_EOperation( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eParameters reference EOperation(source,target) - */ -private pattern mustInRelationeParameters_reference_EOperation( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target) - */ -private pattern mayInRelationeParameters_reference_EOperation( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEParameter_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target) - */ -private pattern mustInRelationeExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target) - */ -private pattern mayInRelationeExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); -} or { - find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target) - */ -private pattern mustInRelationeGenericExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target) - */ -private pattern mayInRelationeGenericExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target) - */ -private pattern mustInRelationeClassifiers_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target) - */ -private pattern mayInRelationeClassifiers_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target) - */ -private pattern mustInRelationeSubpackages_reference_EPackage( +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target) - */ -private pattern mayInRelationeSubpackages_reference_EPackage( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target) - */ -private pattern mustInRelationeSuperPackage_reference_EPackage( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target) - */ -private pattern mayInRelationeSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + LogicProblem.elements(problem,element); } or { - find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eOperation reference EParameter(source,target) - */ -private pattern mustInRelationeOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); } -/** - * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target) - */ -private pattern mayInRelationeOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEParameter_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); } or { - find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target); + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); } -/** - * Matcher for detecting tuples t where []eOpposite reference EReference(source,target) - */ -private pattern mustInRelationeOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); } -/** - * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target) - */ -private pattern mayInRelationeOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); } or { - find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target); + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); } + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// /** - * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target) + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInRelationeReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); } + /** - * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target) + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInRelationeReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target); + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); } + /** - * Matcher for detecting tuples t where []eKeys reference EReference(source,target) + * An element may be an instance of type "FunctionalArchitectureModel class". */ -private pattern mustInRelationeKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); } + /** - * Matcher for detecting tuples t where <>eKeys reference EReference(source,target) + * An element may be an instance of type "Function class". */ -private pattern mayInRelationeKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target); + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); } + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// /** - * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) */ -private pattern mustInRelationeContainingClass_reference_EStructuralFeature( +private pattern mustInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) */ -private pattern mayInRelationeContainingClass_reference_EStructuralFeature( +private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37464,38 +34698,42 @@ private pattern mayInRelationeContainingClass_reference_EStructuralFeature( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); + neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eType reference ETypedElement(source,target) + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ -private pattern mustInRelationeType_reference_ETypedElement( +private pattern mustInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ -private pattern mayInRelationeType_reference_ETypedElement( +private pattern mayInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37504,33 +34742,33 @@ private pattern mayInRelationeType_reference_ETypedElement( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target); + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target) + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ -private pattern mustInRelationeGenericType_reference_ETypedElement( +private pattern mustInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target) + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) */ -private pattern mayInRelationeGenericType_reference_ETypedElement( +private pattern mayInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37539,38 +34777,38 @@ private pattern mayInRelationeGenericType_reference_ETypedElement( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: + // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); + neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target) + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mustInRelationeUpperBound_reference_EGenericType( +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target) + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mayInRelationeUpperBound_reference_EGenericType( +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37579,38 +34817,34 @@ private pattern mayInRelationeUpperBound_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target) + * Matcher for detecting tuples t where []subElements reference Function(source,target) */ -private pattern mustInRelationeTypeArguments_reference_EGenericType( +private pattern mustInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target) + * Matcher for detecting tuples t where <>subElements reference Function(source,target) */ -private pattern mayInRelationeTypeArguments_reference_EGenericType( +private pattern mayInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37619,34 +34853,38 @@ private pattern mayInRelationeTypeArguments_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target) + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) */ -private pattern mustInRelationeRawType_reference_EGenericType( +private pattern mustInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target) + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) */ -private pattern mayInRelationeRawType_reference_EGenericType( +private pattern mayInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37655,33 +34893,42 @@ private pattern mayInRelationeRawType_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target) + * Matcher for detecting tuples t where []from reference InformationLink(source,target) */ -private pattern mustInRelationeLowerBound_reference_EGenericType( +private pattern mustInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target) + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) */ -private pattern mayInRelationeLowerBound_reference_EGenericType( +private pattern mayInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37690,38 +34937,38 @@ private pattern mayInRelationeLowerBound_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: + // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); + neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target) + * Matcher for detecting tuples t where []to reference InformationLink(source,target) */ -private pattern mustInRelationeTypeParameter_reference_EGenericType( +private pattern mustInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target) + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) */ -private pattern mayInRelationeTypeParameter_reference_EGenericType( +private pattern mayInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37730,33 +34977,33 @@ private pattern mayInRelationeTypeParameter_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target) + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) */ -private pattern mustInRelationeClassifier_reference_EGenericType( +private pattern mustInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target) + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) */ -private pattern mayInRelationeClassifier_reference_EGenericType( +private pattern mayInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37765,69 +35012,38 @@ private pattern mayInRelationeClassifier_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target) - */ -private pattern mustInRelationeBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target) - */ -private pattern mayInRelationeBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypeParameter_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []iD attribute EAttribute(source,target) + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) */ -private pattern mustInRelationiD_attribute_EAttribute( +private pattern mustInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target) + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) */ -private pattern mayInRelationiD_attribute_EAttribute( +private pattern mayInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37836,33 +35052,42 @@ private pattern mayInRelationiD_attribute_EAttribute( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - BooleanElement(target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target); + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []source attribute EAnnotation(source,target) + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) */ -private pattern mustInRelationsource_attribute_EAnnotation( +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target) + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) */ -private pattern mayInRelationsource_attribute_EAnnotation( +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37871,33 +35096,33 @@ private pattern mayInRelationsource_attribute_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); } or { - find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target); + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []abstract attribute EClass(source,target) + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mustInRelationabstract_attribute_EClass( +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>abstract attribute EClass(source,target) + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mayInRelationabstract_attribute_EClass( +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37906,33 +35131,38 @@ private pattern mayInRelationabstract_attribute_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []interface attribute EClass(source,target) + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) */ -private pattern mustInRelationinterface_attribute_EClass( +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>interface attribute EClass(source,target) + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) */ -private pattern mayInRelationinterface_attribute_EClass( +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37941,33 +35171,42 @@ private pattern mayInRelationinterface_attribute_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) */ -private pattern mustInRelationinstanceClassName_attribute_EClassifier( +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) */ -private pattern mayInRelationinstanceClassName_attribute_EClassifier( +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -37976,33 +35215,38 @@ private pattern mayInRelationinstanceClassName_attribute_EClassifier( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target) + * Matcher for detecting tuples t where []type attribute Function(source,target) */ -private pattern mustInRelationinstanceTypeName_attribute_EClassifier( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target) + * Matcher for detecting tuples t where <>type attribute Function(source,target) */ -private pattern mayInRelationinstanceTypeName_attribute_EClassifier( +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -38011,733 +35255,1094 @@ private pattern mayInRelationinstanceTypeName_attribute_EClassifier( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target); + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } -/** - * Matcher for detecting tuples t where []serializable attribute EDataType(source,target) - */ -private pattern mustInRelationserializable_attribute_EDataType( + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; } -/** - * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target) - */ -private pattern mayInRelationserializable_attribute_EDataType( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEDataType_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); } -/** - * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationvalue_attribute_EEnumLiteral( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; } -/** - * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationvalue_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) { + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); check(numberOfExistingReferences < 1); -} or { - find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); check(numberOfExistingReferences < 1); -} or { - find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where []name attribute ENamedElement(source,target) - */ -private pattern mustInRelationname_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); } -/** - * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target) - */ -private pattern mayInRelationname_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfENamedElement_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -/** - * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target) - */ -private pattern mustInRelationnsURI_attribute_EPackage( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target) - */ -private pattern mayInRelationnsURI_attribute_EPackage( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target) - */ -private pattern mustInRelationnsPrefix_attribute_EPackage( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target) - */ -private pattern mayInRelationnsPrefix_attribute_EPackage( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []containment attribute EReference(source,target) - */ -private pattern mustInRelationcontainment_attribute_EReference( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>containment attribute EReference(source,target) - */ -private pattern mayInRelationcontainment_attribute_EReference( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []container attribute EReference(source,target) - */ -private pattern mustInRelationcontainer_attribute_EReference( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>container attribute EReference(source,target) - */ -private pattern mayInRelationcontainer_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target) - */ -private pattern mustInRelationresolveProxies_attribute_EReference( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target) - */ -private pattern mayInRelationresolveProxies_attribute_EReference( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationchangeable_attribute_EStructuralFeature( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationchangeable_attribute_EStructuralFeature( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationvolatile_attribute_EStructuralFeature( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationvolatile_attribute_EStructuralFeature( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationtransient_attribute_EStructuralFeature( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationtransient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationunsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationunsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationderived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationderived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target) - */ -private pattern mustInRelationordered_attribute_ETypedElement( + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target) - */ -private pattern mayInRelationordered_attribute_ETypedElement( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target) - */ -private pattern mustInRelationunique_attribute_ETypedElement( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target) - */ -private pattern mayInRelationunique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + LogicProblem.elements(problem,element); } or { - find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target) - */ -private pattern mustInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); } -/** - * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target) - */ -private pattern mayInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); } or { - find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target); + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); } -/** - * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target) - */ -private pattern mustInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); } -/** - * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target) - */ -private pattern mayInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); } or { - find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target); + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); } + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// /** - * Matcher for detecting tuples t where []many attribute ETypedElement(source,target) + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInRelationmany_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); } + /** - * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target) + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInRelationmany_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target); + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); } + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// /** - * Matcher for detecting tuples t where []required attribute ETypedElement(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) */ -private pattern mustInRelationrequired_attribute_ETypedElement( +private pattern mustInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) */ -private pattern mayInRelationrequired_attribute_ETypedElement( +private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -38746,33 +36351,42 @@ private pattern mayInRelationrequired_attribute_ETypedElement( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target) + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ -private pattern mustInRelationkey_attribute_EStringToStringMapEntry( +private pattern mustInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ -private pattern mayInRelationkey_attribute_EStringToStringMapEntry( +private pattern mayInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -38781,33 +36395,33 @@ private pattern mayInRelationkey_attribute_EStringToStringMapEntry( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target); + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target) + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ -private pattern mustInRelationvalue_attribute_EStringToStringMapEntry( +private pattern mustInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target) + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) */ -private pattern mayInRelationvalue_attribute_EStringToStringMapEntry( +private pattern mayInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -38816,740 +36430,814 @@ private pattern mayInRelationvalue_attribute_EStringToStringMapEntry( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target); -} - -////////// -// 1.3 Relation Definition Indexers -////////// - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or - - { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or - - { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or - - { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); -} - -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustInstanceOfEAttribute_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); } -pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustInstanceOfEReference_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} - -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - find mustInstanceOfETypeParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfETypedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClass_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAnnotation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAttribute_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClassifier_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEGenericType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEDataType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEOperation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEReference_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnum_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation( +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation"); - find mustInstanceOfEModelElement_class(problem,interpretation,container); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); } -pattern createObject_EAnnotation_class( +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); } -pattern createObject_EClass_class( +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); } -pattern createObject_EEnum_class( +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } -pattern createObject_EReference_class( +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation( +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } -pattern createObject_EOperation_class( +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier( +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier"); - find mustInstanceOfEClassifier_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation( +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_ETypeParameter_class( +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); } -pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage( +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EPackage_class_UndefinedPart( +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } -pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation( +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EStringToStringMapEntry_class( +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } -pattern createObject_EObject_class_by_contents_reference_EAnnotation( +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EObject_class( +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } -pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass( +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation( +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } -pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement"); - find mustInstanceOfETypedElement_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter"); - find mustInstanceOfETypeParameter_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EGenericType_class( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EParameter_class( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EAttribute_class( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral"); - find mustInstanceOfEEnum_class(problem,interpretation,container); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EEnumLiteral_class( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_EDataType_class( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -39557,1010 +37245,195 @@ pattern createObject_EDataType_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); -} -pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); -} -pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); -} -pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); -} -pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); -} -pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); -} -pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); -} - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_eAttributeType_reference_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - find mustInstanceOfEDataType_class(problem,interpretation,to); - find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); - neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineRelation_references_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - find mustInstanceOfEObject_class(problem,interpretation,to); - find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineRelation_eSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineRelation_eAllAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } -pattern refineRelation_eAllReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -pattern refineRelation_eReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } -pattern refineRelation_eAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); } -pattern refineRelation_eAllContainments_reference_EClass( + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -pattern refineRelation_eAllOperations_reference_EClass( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEOperation_class(problem,interpretation,to); - find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -pattern refineRelation_eAllStructuralFeatures_reference_EClass( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,to); - find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } -pattern refineRelation_eAllSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); } -pattern refineRelation_eIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + LogicProblem.elements(problem,element); +} or { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEGenericType_class(problem,interpretation,to); - find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); } -pattern refineRelation_eExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEOperation_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); - neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); } -pattern refineRelation_eOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); } -pattern refineRelation_eReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); -} -pattern refineRelation_eKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to); -} -pattern refineRelation_eType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_eRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_eTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfETypeParameter_class(problem,interpretation,to); - find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_eClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_iD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to); - neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to); -} -pattern refineRelation_source_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - StringElement(to); - find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); -} -pattern refineRelation_abstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to); -} -pattern refineRelation_interface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to); -} -pattern refineRelation_instanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); -} -pattern refineRelation_instanceTypeName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); -} -pattern refineRelation_serializable_attribute_EDataType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEDataType_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to); - neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to); -} -pattern refineRelation_value_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); -} -pattern refineRelation_literal_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - StringElement(to); - find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); -} -pattern refineRelation_name_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfENamedElement_class(problem,interpretation,from); - StringElement(to); - find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to); - neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to); -} -pattern refineRelation_nsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); -} -pattern refineRelation_nsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); -} -pattern refineRelation_containment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to); -} -pattern refineRelation_container_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to); -} -pattern refineRelation_resolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); -} -pattern refineRelation_changeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_volatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_transient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - StringElement(to); - find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_unsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_derived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_ordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_unique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_lowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_upperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_many_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_required_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_key_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); -} -pattern refineRelation_value_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); -} -import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" - -////////// -// 0. Util -////////// -private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { - PartialInterpretation.problem(interpretation,problem); -} - -///////////////////////// -// 0.1 Existence -///////////////////////// -private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find interpretation(problem,interpretation); - LogicProblem.elements(problem,element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); -} - -private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find mustExist(problem,interpretation,element); -} or { - find interpretation(problem,interpretation); - neg find elementCloseWorld(element); - PartialInterpretation.openWorldElements(interpretation,element); -} - -private pattern elementCloseWorld(element:DefinedElement) { - PartialInterpretation.openWorldElements(i,element); - PartialInterpretation.maxNewElements(i,0); -} or { - Scope.targetTypeInterpretation(scope,interpretation); - PartialTypeInterpratation.elements(interpretation,element); - Scope.maxNewElements(scope,0); -} - -//////////////////////// -// 0.2 Equivalence -//////////////////////// -pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { - find mayExist(problem,interpretation,a); - find mayExist(problem,interpretation,b); - a == b; -} - -//////////////////////// -// 0.3 Required Patterns by TypeIndexer -//////////////////////// -private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { - find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); -} - -private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { find interpretation(problem,interpretation); LogicProblem.types(problem,type); TypeDefinition.elements(type,element); @@ -40586,1130 +37459,436 @@ private pattern isPrimitive(element: PrimitiveElement) { // 1.1.2 domain-specific Type Indexers ////////// /** - * An element must be an instance of type "EAttribute class". + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAttribute class"); +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAttribute class"); + Type.name(type,"FunctionalElement class"); } /** - * An element may be an instance of type "EAttribute class". + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEAttribute_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } /** - * An element must be an instance of type "EAnnotation class". + * An element must be an instance of type "FunctionalArchitectureModel class". */ -private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAnnotation class"); +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAnnotation class"); + Type.name(type,"FunctionalArchitectureModel class"); } /** - * An element may be an instance of type "EAnnotation class". + * An element may be an instance of type "FunctionalArchitectureModel class". */ -private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } /** - * An element must be an instance of type "EClass class". + * An element must be an instance of type "Function class". */ -private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClass class"); +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClass class"); + Type.name(type,"Function class"); } /** - * An element may be an instance of type "EClass class". + * An element may be an instance of type "Function class". */ -private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEClass_class(problem,interpretation,element); } +{ find mustInstanceOfFunction_class(problem,interpretation,element); } /** - * An element must be an instance of type "EClassifier class". + * An element must be an instance of type "FAMTerminator class". */ -private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClassifier class"); +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClassifier class"); + Type.name(type,"FAMTerminator class"); } /** - * An element may be an instance of type "EClassifier class". + * An element may be an instance of type "FAMTerminator class". */ -private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEClassifier_class(problem,interpretation,element); } +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } /** - * An element must be an instance of type "EDataType class". + * An element must be an instance of type "InformationLink class". */ -private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EDataType class"); +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EDataType class"); + Type.name(type,"InformationLink class"); } /** - * An element may be an instance of type "EDataType class". + * An element may be an instance of type "InformationLink class". */ -private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEDataType_class(problem,interpretation,element); } +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } /** - * An element must be an instance of type "EEnum class". + * An element must be an instance of type "FunctionalInterface class". */ -private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnum class"); +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnum class"); + Type.name(type,"FunctionalInterface class"); } /** - * An element may be an instance of type "EEnum class". + * An element may be an instance of type "FunctionalInterface class". */ -private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEEnum_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } /** - * An element must be an instance of type "EEnumLiteral class". + * An element must be an instance of type "FunctionalInput class". */ -private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnumLiteral class"); +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnumLiteral class"); + Type.name(type,"FunctionalInput class"); } /** - * An element may be an instance of type "EEnumLiteral class". + * An element may be an instance of type "FunctionalInput class". */ -private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class". - */ -private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class"); -} - -/** - * An element may be an instance of type "EModelElement class". - */ -private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEModelElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class". - */ -private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class"); -} - -/** - * An element may be an instance of type "ENamedElement class". - */ -private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfENamedElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EObject class". - */ -private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EObject class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EObject class"); -} - -/** - * An element may be an instance of type "EObject class". - */ -private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEObject_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EOperation class". - */ -private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EOperation class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EOperation class"); -} - -/** - * An element may be an instance of type "EOperation class". - */ -private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEOperation_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class". - */ -private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class"); -} - -/** - * An element may be an instance of type "EPackage class". - */ -private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EParameter class". - */ -private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EParameter class"); -} - -/** - * An element may be an instance of type "EParameter class". - */ -private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEParameter_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EReference class". - */ -private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EReference class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EReference class"); -} - -/** - * An element may be an instance of type "EReference class". - */ -private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEReference_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EStructuralFeature class". - */ -private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStructuralFeature class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStructuralFeature class"); -} - -/** - * An element may be an instance of type "EStructuralFeature class". - */ -private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ETypedElement class". - */ -private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypedElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypedElement class"); -} - -/** - * An element may be an instance of type "ETypedElement class". - */ -private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypedElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EStringToStringMapEntry class". - */ -private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStringToStringMapEntry class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStringToStringMapEntry class"); -} - -/** - * An element may be an instance of type "EStringToStringMapEntry class". - */ -private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EGenericType class". - */ -private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EGenericType class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EGenericType class"); -} - -/** - * An element may be an instance of type "EGenericType class". - */ -private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEGenericType_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ETypeParameter class". - */ -private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypeParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypeParameter class"); -} - -/** - * An element may be an instance of type "ETypeParameter class". - */ -private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class DefinedPart". - */ -private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class DefinedPart"); -} - -/** - * An element may be an instance of type "EModelElement class DefinedPart". - */ -private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); } +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } /** - * An element must be an instance of type "EModelElement class UndefinedPart". + * An element must be an instance of type "FunctionalOutput class". */ -private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class UndefinedPart"); +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class UndefinedPart"); + Type.name(type,"FunctionalOutput class"); } /** - * An element may be an instance of type "EModelElement class UndefinedPart". + * An element may be an instance of type "FunctionalOutput class". */ -private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class DefinedPart"); -} - -/** - * An element may be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); } +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } /** - * An element must be an instance of type "ENamedElement class UndefinedPart". + * An element must be an instance of type "FunctionalData class". */ -private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class UndefinedPart"); +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class UndefinedPart"); + Type.name(type,"FunctionalData class"); } /** - * An element may be an instance of type "ENamedElement class UndefinedPart". + * An element may be an instance of type "FunctionalData class". */ -private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class DefinedPart". - */ -private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class DefinedPart"); -} - -/** - * An element may be an instance of type "EPackage class DefinedPart". - */ -private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); } +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } /** - * An element must be an instance of type "EPackage class UndefinedPart". + * An element must be an instance of type "FunctionType enum". */ -private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class UndefinedPart"); +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class UndefinedPart"); + Type.name(type,"FunctionType enum"); } /** - * An element may be an instance of type "EPackage class UndefinedPart". + * An element may be an instance of type "FunctionType enum". */ -private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); } +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers ////////// /** - * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) */ -private pattern mustInRelationeAttributeType_reference_EAttribute( +private pattern mustInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) */ -private pattern mayInRelationeAttributeType_reference_EAttribute( +private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -41718,33 +37897,42 @@ private pattern mayInRelationeAttributeType_reference_EAttribute( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - find mayInstanceOfEDataType_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []details reference EAnnotation(source,target) + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ -private pattern mustInRelationdetails_reference_EAnnotation( +private pattern mustInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>details reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ -private pattern mayInRelationdetails_reference_EAnnotation( +private pattern mayInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -41753,34 +37941,33 @@ private pattern mayInRelationdetails_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target) + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ -private pattern mustInRelationeModelElement_reference_EAnnotation( +private pattern mustInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) */ -private pattern mayInRelationeModelElement_reference_EAnnotation( +private pattern mayInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -41789,11 +37976,11 @@ private pattern mayInRelationeModelElement_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEModelElement_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents @@ -41801,26 +37988,26 @@ private pattern mayInRelationeModelElement_reference_EAnnotation( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []contents reference EAnnotation(source,target) + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mustInRelationcontents_reference_EAnnotation( +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mayInRelationcontents_reference_EAnnotation( +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -41829,34 +38016,34 @@ private pattern mayInRelationcontents_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []references reference EAnnotation(source,target) + * Matcher for detecting tuples t where []subElements reference Function(source,target) */ -private pattern mustInRelationreferences_reference_EAnnotation( +private pattern mustInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>references reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>subElements reference Function(source,target) */ -private pattern mayInRelationreferences_reference_EAnnotation( +private pattern mayInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -41865,29 +38052,38 @@ private pattern mayInRelationreferences_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) */ -private pattern mustInRelationeSuperTypes_reference_EClass( +private pattern mustInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target) + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) */ -private pattern mayInRelationeSuperTypes_reference_EClass( +private pattern mayInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -41896,29 +38092,42 @@ private pattern mayInRelationeSuperTypes_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target); + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eOperations reference EClass(source,target) + * Matcher for detecting tuples t where []from reference InformationLink(source,target) */ -private pattern mustInRelationeOperations_reference_EClass( +private pattern mustInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eOperations reference EClass(source,target) + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) */ -private pattern mayInRelationeOperations_reference_EClass( +private pattern mayInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -41927,38 +38136,38 @@ private pattern mayInRelationeOperations_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); + neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target) + * Matcher for detecting tuples t where []to reference InformationLink(source,target) */ -private pattern mustInRelationeAllAttributes_reference_EClass( +private pattern mustInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target) + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) */ -private pattern mayInRelationeAllAttributes_reference_EClass( +private pattern mayInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -41967,29 +38176,33 @@ private pattern mayInRelationeAllAttributes_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target); + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target) + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) */ -private pattern mustInRelationeAllReferences_reference_EClass( +private pattern mustInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target) + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) */ -private pattern mayInRelationeAllReferences_reference_EClass( +private pattern mayInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -41998,29 +38211,38 @@ private pattern mayInRelationeAllReferences_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target); + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eReferences reference EClass(source,target) + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) */ -private pattern mustInRelationeReferences_reference_EClass( +private pattern mustInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eReferences reference EClass(source,target) + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) */ -private pattern mayInRelationeReferences_reference_EClass( +private pattern mayInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -42029,366 +38251,42 @@ private pattern mayInRelationeReferences_reference_EClass( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAttributes reference EClass(source,target) - */ -private pattern mustInRelationeAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target) - */ -private pattern mayInRelationeAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target) - */ -private pattern mustInRelationeAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target) - */ -private pattern mayInRelationeAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target) - */ -private pattern mustInRelationeAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target) - */ -private pattern mayInRelationeAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); -} or { - find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target) - */ -private pattern mustInRelationeAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target) - */ -private pattern mayInRelationeAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); -} or { - find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeAllSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeAllSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); -} or { - find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target) - */ -private pattern mustInRelationeIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target) - */ -private pattern mayInRelationeIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); check(numberOfExistingReferences < 1); -} or { - find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target) - */ -private pattern mustInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target) - */ -private pattern mayInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference to the target, // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_); + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); -} or { - find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target) - */ -private pattern mustInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target) - */ -private pattern mayInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target); + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target) + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) */ -private pattern mustInRelationeTypeParameters_reference_EClassifier( +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target) + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) */ -private pattern mayInRelationeTypeParameters_reference_EClassifier( +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -42397,34 +38295,33 @@ private pattern mayInRelationeTypeParameters_reference_EClassifier( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); } or { - find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target) + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mustInRelationeLiterals_reference_EEnum( +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target) + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mayInRelationeLiterals_reference_EEnum( +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -42433,11 +38330,11 @@ private pattern mayInRelationeLiterals_reference_EEnum( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEEnum_class(problem,interpretation,source); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,target); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference to the target, // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_); + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents @@ -42445,26 +38342,26 @@ private pattern mayInRelationeLiterals_reference_EEnum( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target) + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) */ -private pattern mustInRelationeEnum_reference_EEnumLiteral( +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target) + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) */ -private pattern mayInRelationeEnum_reference_EEnumLiteral( +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -42473,51 +38370,15 @@ private pattern mayInRelationeEnum_reference_EEnumLiteral( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - find mayInstanceOfEEnum_class(problem,interpretation,target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target) - */ -private pattern mustInRelationeAnnotations_reference_EModelElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target) - */ -private pattern mayInRelationeAnnotations_reference_EModelElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEModelElement_class(problem,interpretation,source); - find mayInstanceOfEAnnotation_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference to the target, // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_); + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents @@ -42525,26 +38386,26 @@ private pattern mayInRelationeAnnotations_reference_EModelElement( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) */ -private pattern mustInRelationeContainingClass_reference_EOperation( +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) */ -private pattern mayInRelationeContainingClass_reference_EOperation( +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -42553,11 +38414,11 @@ private pattern mayInRelationeContainingClass_reference_EOperation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); check(numberOfExistingReferences < 1); // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents @@ -42565,26 +38426,26 @@ private pattern mayInRelationeContainingClass_reference_EOperation( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target) + * Matcher for detecting tuples t where []type attribute Function(source,target) */ -private pattern mustInRelationeTypeParameters_reference_EOperation( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target) + * Matcher for detecting tuples t where <>type attribute Function(source,target) */ -private pattern mayInRelationeTypeParameters_reference_EOperation( +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -42593,14513 +38454,2305 @@ private pattern mayInRelationeTypeParameters_reference_EOperation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } -/** - * Matcher for detecting tuples t where []eParameters reference EOperation(source,target) - */ -private pattern mustInRelationeParameters_reference_EOperation( + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target) - */ -private pattern mayInRelationeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEParameter_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; } -/** - * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target) - */ -private pattern mustInRelationeExceptions_reference_EOperation( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target) - */ -private pattern mayInRelationeExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); -} or { - find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); } -/** - * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target) - */ -private pattern mustInRelationeGenericExceptions_reference_EOperation( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target) - */ -private pattern mayInRelationeGenericExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; } -/** - * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target) - */ -private pattern mustInRelationeClassifiers_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); } -/** - * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target) - */ -private pattern mayInRelationeClassifiers_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target) - */ -private pattern mustInRelationeSubpackages_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); } -/** - * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target) - */ -private pattern mayInRelationeSubpackages_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) { - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); } -/** - * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target) - */ -private pattern mustInRelationeSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target) - */ -private pattern mayInRelationeSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where []eOperation reference EParameter(source,target) - */ -private pattern mustInRelationeOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target) - */ -private pattern mayInRelationeOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEParameter_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where []eOpposite reference EReference(source,target) - */ -private pattern mustInRelationeOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target) - */ -private pattern mayInRelationeOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) { - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); } -/** - * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target) - */ -private pattern mustInRelationeReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -/** - * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target) - */ -private pattern mayInRelationeReferenceType_reference_EReference( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eKeys reference EReference(source,target) - */ -private pattern mustInRelationeKeys_reference_EReference( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eKeys reference EReference(source,target) - */ -private pattern mayInRelationeKeys_reference_EReference( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target) - */ -private pattern mustInRelationeContainingClass_reference_EStructuralFeature( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target) - */ -private pattern mayInRelationeContainingClass_reference_EStructuralFeature( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eType reference ETypedElement(source,target) - */ -private pattern mustInRelationeType_reference_ETypedElement( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target) - */ -private pattern mayInRelationeType_reference_ETypedElement( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target) - */ -private pattern mustInRelationeGenericType_reference_ETypedElement( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target) - */ -private pattern mayInRelationeGenericType_reference_ETypedElement( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target) - */ -private pattern mustInRelationeUpperBound_reference_EGenericType( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target) - */ -private pattern mayInRelationeUpperBound_reference_EGenericType( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target) - */ -private pattern mustInRelationeTypeArguments_reference_EGenericType( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target) - */ -private pattern mayInRelationeTypeArguments_reference_EGenericType( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target) - */ -private pattern mustInRelationeRawType_reference_EGenericType( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target) - */ -private pattern mayInRelationeRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target) - */ -private pattern mustInRelationeLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target) - */ -private pattern mayInRelationeLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target) - */ -private pattern mustInRelationeTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target) - */ -private pattern mayInRelationeTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target) - */ -private pattern mustInRelationeClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target) - */ -private pattern mayInRelationeClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target) - */ -private pattern mustInRelationeBounds_reference_ETypeParameter( + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target) - */ -private pattern mayInRelationeBounds_reference_ETypeParameter( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypeParameter_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where []iD attribute EAttribute(source,target) - */ -private pattern mustInRelationiD_attribute_EAttribute( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target) - */ -private pattern mayInRelationiD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + LogicProblem.elements(problem,element); } or { - find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []source attribute EAnnotation(source,target) - */ -private pattern mustInRelationsource_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); } -/** - * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target) - */ -private pattern mayInRelationsource_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); } or { - find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target); + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); } -/** - * Matcher for detecting tuples t where []abstract attribute EClass(source,target) - */ -private pattern mustInRelationabstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); } -/** - * Matcher for detecting tuples t where <>abstract attribute EClass(source,target) - */ -private pattern mayInRelationabstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); } or { - find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target); + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); } + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// /** - * Matcher for detecting tuples t where []interface attribute EClass(source,target) + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInRelationinterface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); } + /** - * Matcher for detecting tuples t where <>interface attribute EClass(source,target) + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInRelationinterface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target) + * An element must be an instance of type "FunctionalArchitectureModel class". */ -private pattern mustInRelationinstanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); } + /** - * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target) + * An element may be an instance of type "FunctionalArchitectureModel class". */ -private pattern mayInRelationinstanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target) + * An element must be an instance of type "Function class". */ -private pattern mustInRelationinstanceTypeName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); } + /** - * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target) + * An element may be an instance of type "Function class". */ -private pattern mayInRelationinstanceTypeName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []serializable attribute EDataType(source,target) + * An element must be an instance of type "FAMTerminator class". */ -private pattern mustInRelationserializable_attribute_EDataType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); } + /** - * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target) + * An element may be an instance of type "FAMTerminator class". */ -private pattern mayInRelationserializable_attribute_EDataType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEDataType_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationvalue_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationvalue_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []name attribute ENamedElement(source,target) - */ -private pattern mustInRelationname_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target) - */ -private pattern mayInRelationname_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfENamedElement_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target) - */ -private pattern mustInRelationnsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target) - */ -private pattern mayInRelationnsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target) - */ -private pattern mustInRelationnsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target) - */ -private pattern mayInRelationnsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []containment attribute EReference(source,target) - */ -private pattern mustInRelationcontainment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>containment attribute EReference(source,target) - */ -private pattern mayInRelationcontainment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []container attribute EReference(source,target) - */ -private pattern mustInRelationcontainer_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>container attribute EReference(source,target) - */ -private pattern mayInRelationcontainer_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target) - */ -private pattern mustInRelationresolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target) + * An element must be an instance of type "InformationLink class". */ -private pattern mayInRelationresolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target); +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); } -/** - * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationchangeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); } + /** - * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target) + * An element may be an instance of type "InformationLink class". */ -private pattern mayInRelationchangeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationvolatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target) + * An element must be an instance of type "FunctionalInterface class". */ -private pattern mayInRelationvolatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target); +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); } -/** - * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationtransient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); } + /** - * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target) + * An element may be an instance of type "FunctionalInterface class". */ -private pattern mayInRelationtransient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target) + * An element must be an instance of type "FunctionalInput class". */ -private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target); +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); } -/** - * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationunsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); } + /** - * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target) + * An element may be an instance of type "FunctionalInput class". */ -private pattern mayInRelationunsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationderived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target) + * An element must be an instance of type "FunctionalOutput class". */ -private pattern mayInRelationderived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target); +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); } -/** - * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target) - */ -private pattern mustInRelationordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); } + /** - * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target) + * An element may be an instance of type "FunctionalOutput class". */ -private pattern mayInRelationordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target) - */ -private pattern mustInRelationunique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target) + * An element must be an instance of type "FunctionalData class". */ -private pattern mayInRelationunique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target) - */ -private pattern mustInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target) - */ -private pattern mayInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target) - */ -private pattern mustInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target) - */ -private pattern mayInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []many attribute ETypedElement(source,target) - */ -private pattern mustInRelationmany_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target) - */ -private pattern mayInRelationmany_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []required attribute ETypedElement(source,target) - */ -private pattern mustInRelationrequired_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target) - */ -private pattern mayInRelationrequired_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target) - */ -private pattern mustInRelationkey_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target) - */ -private pattern mayInRelationkey_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target) - */ -private pattern mustInRelationvalue_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target) - */ -private pattern mayInRelationvalue_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target); -} - -////////// -// 1.3 Relation Definition Indexers -////////// - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or - - { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or - - { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or - - { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); -} - -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustInstanceOfEAttribute_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustInstanceOfEReference_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} - -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) -{ - find interpretation(problem,interpretation); - find mustInstanceOfETypeParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfETypedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClass_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAnnotation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAttribute_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClassifier_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEGenericType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEDataType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEOperation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEReference_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnum_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -} -pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnum_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAttribute_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EObject_class_by_contents_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EObject_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EReference_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EPackage_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation"); - find mustInstanceOfEModelElement_class(problem,interpretation,container); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAnnotation_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EParameter_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EDataType_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EOperation_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EStringToStringMapEntry_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral"); - find mustInstanceOfEEnum_class(problem,interpretation,container); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnumLiteral_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EClass_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier"); - find mustInstanceOfEClassifier_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_ETypeParameter_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement"); - find mustInstanceOfETypedElement_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter"); - find mustInstanceOfETypeParameter_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} - -////////// -// 4.2 Type refinement -////////// -pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); -} -pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); -} -pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} -pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); -} - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_eAttributeType_reference_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - find mustInstanceOfEDataType_class(problem,interpretation,to); - find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); - neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); -} -pattern refineRelation_references_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - find mustInstanceOfEObject_class(problem,interpretation,to); - find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); -} -pattern refineRelation_eSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEOperation_class(problem,interpretation,to); - find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,to); - find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEGenericType_class(problem,interpretation,to); - find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEOperation_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); - neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); -} -pattern refineRelation_eOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to); -} -pattern refineRelation_eReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); -} -pattern refineRelation_eKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to); -} -pattern refineRelation_eType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_eRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_eTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfETypeParameter_class(problem,interpretation,to); - find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_eClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_iD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to); - neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to); -} -pattern refineRelation_source_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - StringElement(to); - find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); -} -pattern refineRelation_abstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to); -} -pattern refineRelation_interface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to); -} -pattern refineRelation_instanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); -} -pattern refineRelation_instanceTypeName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); -} -pattern refineRelation_serializable_attribute_EDataType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEDataType_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to); - neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to); -} -pattern refineRelation_value_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); -} -pattern refineRelation_literal_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - StringElement(to); - find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); -} -pattern refineRelation_name_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfENamedElement_class(problem,interpretation,from); - StringElement(to); - find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to); - neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to); -} -pattern refineRelation_nsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); -} -pattern refineRelation_nsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); -} -pattern refineRelation_containment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to); -} -pattern refineRelation_container_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to); -} -pattern refineRelation_resolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); -} -pattern refineRelation_changeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_volatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_transient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - StringElement(to); - find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_unsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_derived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_ordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_unique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_lowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_upperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_many_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_required_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_key_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); -} -pattern refineRelation_value_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); -} -import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" - -////////// -// 0. Util -////////// -private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { - PartialInterpretation.problem(interpretation,problem); -} - -///////////////////////// -// 0.1 Existence -///////////////////////// -private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find interpretation(problem,interpretation); - LogicProblem.elements(problem,element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); -} - -private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find mustExist(problem,interpretation,element); -} or { - find interpretation(problem,interpretation); - neg find elementCloseWorld(element); - PartialInterpretation.openWorldElements(interpretation,element); -} - -private pattern elementCloseWorld(element:DefinedElement) { - PartialInterpretation.openWorldElements(i,element); - PartialInterpretation.maxNewElements(i,0); -} or { - Scope.targetTypeInterpretation(scope,interpretation); - PartialTypeInterpratation.elements(interpretation,element); - Scope.maxNewElements(scope,0); -} - -//////////////////////// -// 0.2 Equivalence -//////////////////////// -pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { - find mayExist(problem,interpretation,a); - find mayExist(problem,interpretation,b); - a == b; -} - -//////////////////////// -// 0.3 Required Patterns by TypeIndexer -//////////////////////// -private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { - find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); -} - -private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { - find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - TypeDefinition.elements(type,element); -} or { - find interpretation(problem,interpretation); - find typeInterpretation(problem,interpretation,type,typeInterpretation); - PartialComplexTypeInterpretation.elements(typeInterpretation,element); -} - -private pattern isPrimitive(element: PrimitiveElement) { - PrimitiveElement(element); -} - -////////// -// 1. Problem-Specific Base Indexers -////////// -// 1.1 Type Indexers -////////// -// 1.1.1 primitive Type Indexers -////////// - -////////// -// 1.1.2 domain-specific Type Indexers -////////// -/** - * An element must be an instance of type "EAttribute class". - */ -private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAttribute class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAttribute class"); -} - -/** - * An element may be an instance of type "EAttribute class". - */ -private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEAttribute_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EAnnotation class". - */ -private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAnnotation class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAnnotation class"); -} - -/** - * An element may be an instance of type "EAnnotation class". - */ -private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EClass class". - */ -private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClass class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClass class"); -} - -/** - * An element may be an instance of type "EClass class". - */ -private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEClass_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EClassifier class". - */ -private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClassifier class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClassifier class"); -} - -/** - * An element may be an instance of type "EClassifier class". - */ -private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEClassifier_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EDataType class". - */ -private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EDataType class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EDataType class"); -} - -/** - * An element may be an instance of type "EDataType class". - */ -private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEDataType_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EEnum class". - */ -private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnum class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnum class"); -} - -/** - * An element may be an instance of type "EEnum class". - */ -private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEEnum_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EEnumLiteral class". - */ -private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnumLiteral class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnumLiteral class"); -} - -/** - * An element may be an instance of type "EEnumLiteral class". - */ -private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class". - */ -private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class"); -} - -/** - * An element may be an instance of type "EModelElement class". - */ -private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEModelElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class". - */ -private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class"); -} - -/** - * An element may be an instance of type "ENamedElement class". - */ -private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfENamedElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EObject class". - */ -private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EObject class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EObject class"); -} - -/** - * An element may be an instance of type "EObject class". - */ -private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEObject_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EOperation class". - */ -private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EOperation class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EOperation class"); -} - -/** - * An element may be an instance of type "EOperation class". - */ -private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEOperation_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class". - */ -private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class"); -} - -/** - * An element may be an instance of type "EPackage class". - */ -private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EParameter class". - */ -private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EParameter class"); -} - -/** - * An element may be an instance of type "EParameter class". - */ -private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEParameter_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EReference class". - */ -private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EReference class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EReference class"); -} - -/** - * An element may be an instance of type "EReference class". - */ -private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEReference_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EStructuralFeature class". - */ -private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStructuralFeature class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStructuralFeature class"); -} - -/** - * An element may be an instance of type "EStructuralFeature class". - */ -private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ETypedElement class". - */ -private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypedElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypedElement class"); -} - -/** - * An element may be an instance of type "ETypedElement class". - */ -private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypedElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EStringToStringMapEntry class". - */ -private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStringToStringMapEntry class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStringToStringMapEntry class"); -} - -/** - * An element may be an instance of type "EStringToStringMapEntry class". - */ -private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EGenericType class". - */ -private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EGenericType class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EGenericType class"); -} - -/** - * An element may be an instance of type "EGenericType class". - */ -private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEGenericType_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ETypeParameter class". - */ -private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypeParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypeParameter class"); -} - -/** - * An element may be an instance of type "ETypeParameter class". - */ -private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class DefinedPart". - */ -private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class DefinedPart"); -} - -/** - * An element may be an instance of type "EModelElement class DefinedPart". - */ -private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class UndefinedPart". - */ -private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class UndefinedPart"); -} - -/** - * An element may be an instance of type "EModelElement class UndefinedPart". - */ -private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class DefinedPart"); -} - -/** - * An element may be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class UndefinedPart". - */ -private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class UndefinedPart"); -} - -/** - * An element may be an instance of type "ENamedElement class UndefinedPart". - */ -private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class DefinedPart". - */ -private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class DefinedPart"); -} - -/** - * An element may be an instance of type "EPackage class DefinedPart". - */ -private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class UndefinedPart". - */ -private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class UndefinedPart"); -} - -/** - * An element may be an instance of type "EPackage class UndefinedPart". - */ -private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); } - -////////// -// 1.2 Relation Declaration Indexers -////////// -/** - * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target) - */ -private pattern mustInRelationeAttributeType_reference_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target) - */ -private pattern mayInRelationeAttributeType_reference_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - find mayInstanceOfEDataType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []details reference EAnnotation(source,target) - */ -private pattern mustInRelationdetails_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>details reference EAnnotation(source,target) - */ -private pattern mayInRelationdetails_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target) - */ -private pattern mustInRelationeModelElement_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target) - */ -private pattern mayInRelationeModelElement_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEModelElement_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []contents reference EAnnotation(source,target) - */ -private pattern mustInRelationcontents_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target) - */ -private pattern mayInRelationcontents_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []references reference EAnnotation(source,target) - */ -private pattern mustInRelationreferences_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>references reference EAnnotation(source,target) - */ -private pattern mayInRelationreferences_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); -} or { - find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); -} or { - find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eOperations reference EClass(source,target) - */ -private pattern mustInRelationeOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eOperations reference EClass(source,target) - */ -private pattern mayInRelationeOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target) - */ -private pattern mustInRelationeAllAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target) - */ -private pattern mayInRelationeAllAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target) - */ -private pattern mustInRelationeAllReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target) - */ -private pattern mayInRelationeAllReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eReferences reference EClass(source,target) - */ -private pattern mustInRelationeReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eReferences reference EClass(source,target) - */ -private pattern mayInRelationeReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAttributes reference EClass(source,target) - */ -private pattern mustInRelationeAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target) - */ -private pattern mayInRelationeAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target) - */ -private pattern mustInRelationeAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target) - */ -private pattern mayInRelationeAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target) - */ -private pattern mustInRelationeAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target) - */ -private pattern mayInRelationeAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); -} or { - find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target) - */ -private pattern mustInRelationeAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target) - */ -private pattern mayInRelationeAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); -} or { - find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeAllSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeAllSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); -} or { - find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target) - */ -private pattern mustInRelationeIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target) - */ -private pattern mayInRelationeIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target) - */ -private pattern mustInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target) - */ -private pattern mayInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); -} or { - find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target) - */ -private pattern mustInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target) - */ -private pattern mayInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target) - */ -private pattern mustInRelationeTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target) - */ -private pattern mayInRelationeTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target) - */ -private pattern mustInRelationeLiterals_reference_EEnum( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target) - */ -private pattern mayInRelationeLiterals_reference_EEnum( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnum_class(problem,interpretation,source); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target) - */ -private pattern mustInRelationeEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target) - */ -private pattern mayInRelationeEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - find mayInstanceOfEEnum_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target) - */ -private pattern mustInRelationeAnnotations_reference_EModelElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target) - */ -private pattern mayInRelationeAnnotations_reference_EModelElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEModelElement_class(problem,interpretation,source); - find mayInstanceOfEAnnotation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target) - */ -private pattern mustInRelationeContainingClass_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target) - */ -private pattern mayInRelationeContainingClass_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target) - */ -private pattern mustInRelationeTypeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target) - */ -private pattern mayInRelationeTypeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eParameters reference EOperation(source,target) - */ -private pattern mustInRelationeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target) - */ -private pattern mayInRelationeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEParameter_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target) - */ -private pattern mustInRelationeExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target) - */ -private pattern mayInRelationeExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); -} or { - find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target) - */ -private pattern mustInRelationeGenericExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target) - */ -private pattern mayInRelationeGenericExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target) - */ -private pattern mustInRelationeClassifiers_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target) - */ -private pattern mayInRelationeClassifiers_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target) - */ -private pattern mustInRelationeSubpackages_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target) - */ -private pattern mayInRelationeSubpackages_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target) - */ -private pattern mustInRelationeSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target) - */ -private pattern mayInRelationeSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eOperation reference EParameter(source,target) - */ -private pattern mustInRelationeOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target) - */ -private pattern mayInRelationeOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEParameter_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eOpposite reference EReference(source,target) - */ -private pattern mustInRelationeOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target) - */ -private pattern mayInRelationeOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target) - */ -private pattern mustInRelationeReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target) - */ -private pattern mayInRelationeReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eKeys reference EReference(source,target) - */ -private pattern mustInRelationeKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eKeys reference EReference(source,target) - */ -private pattern mayInRelationeKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target) - */ -private pattern mustInRelationeContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target) - */ -private pattern mayInRelationeContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eType reference ETypedElement(source,target) - */ -private pattern mustInRelationeType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target) - */ -private pattern mayInRelationeType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target) - */ -private pattern mustInRelationeGenericType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target) - */ -private pattern mayInRelationeGenericType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target) - */ -private pattern mustInRelationeUpperBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target) - */ -private pattern mayInRelationeUpperBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target) - */ -private pattern mustInRelationeTypeArguments_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target) - */ -private pattern mayInRelationeTypeArguments_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target) - */ -private pattern mustInRelationeRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target) - */ -private pattern mayInRelationeRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target) - */ -private pattern mustInRelationeLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target) - */ -private pattern mayInRelationeLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target) - */ -private pattern mustInRelationeTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target) - */ -private pattern mayInRelationeTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target) - */ -private pattern mustInRelationeClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target) - */ -private pattern mayInRelationeClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target) - */ -private pattern mustInRelationeBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target) - */ -private pattern mayInRelationeBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypeParameter_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []iD attribute EAttribute(source,target) - */ -private pattern mustInRelationiD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target) - */ -private pattern mayInRelationiD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []source attribute EAnnotation(source,target) - */ -private pattern mustInRelationsource_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target) - */ -private pattern mayInRelationsource_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []abstract attribute EClass(source,target) - */ -private pattern mustInRelationabstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>abstract attribute EClass(source,target) - */ -private pattern mayInRelationabstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []interface attribute EClass(source,target) - */ -private pattern mustInRelationinterface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>interface attribute EClass(source,target) - */ -private pattern mayInRelationinterface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target) - */ -private pattern mustInRelationinstanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target) - */ -private pattern mayInRelationinstanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target) - */ -private pattern mustInRelationinstanceTypeName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target) - */ -private pattern mayInRelationinstanceTypeName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []serializable attribute EDataType(source,target) - */ -private pattern mustInRelationserializable_attribute_EDataType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target) - */ -private pattern mayInRelationserializable_attribute_EDataType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEDataType_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationvalue_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationvalue_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []name attribute ENamedElement(source,target) - */ -private pattern mustInRelationname_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target) - */ -private pattern mayInRelationname_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfENamedElement_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target) - */ -private pattern mustInRelationnsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target) - */ -private pattern mayInRelationnsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target) - */ -private pattern mustInRelationnsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target) - */ -private pattern mayInRelationnsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []containment attribute EReference(source,target) - */ -private pattern mustInRelationcontainment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>containment attribute EReference(source,target) - */ -private pattern mayInRelationcontainment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []container attribute EReference(source,target) - */ -private pattern mustInRelationcontainer_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>container attribute EReference(source,target) - */ -private pattern mayInRelationcontainer_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target) - */ -private pattern mustInRelationresolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target) - */ -private pattern mayInRelationresolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationchangeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationchangeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationvolatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationvolatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationtransient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationtransient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationunsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationunsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationderived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationderived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target) - */ -private pattern mustInRelationordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target) - */ -private pattern mayInRelationordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target) - */ -private pattern mustInRelationunique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target) - */ -private pattern mayInRelationunique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target) - */ -private pattern mustInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target) - */ -private pattern mayInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target) - */ -private pattern mustInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target) - */ -private pattern mayInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []many attribute ETypedElement(source,target) - */ -private pattern mustInRelationmany_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target) - */ -private pattern mayInRelationmany_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []required attribute ETypedElement(source,target) - */ -private pattern mustInRelationrequired_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target) - */ -private pattern mayInRelationrequired_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target) - */ -private pattern mustInRelationkey_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target) - */ -private pattern mayInRelationkey_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target) - */ -private pattern mustInRelationvalue_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target) - */ -private pattern mayInRelationvalue_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target); -} - -////////// -// 1.3 Relation Definition Indexers -////////// - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or - - { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or - - { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or - - { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); -} - -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustInstanceOfEAttribute_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustInstanceOfEReference_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} - -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) -{ - find interpretation(problem,interpretation); - find mustInstanceOfEOperation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEGenericType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAttribute_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEDataType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClassifier_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAnnotation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfETypeParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEReference_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnum_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfETypedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClass_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -} -pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EStringToStringMapEntry_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement"); - find mustInstanceOfETypedElement_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter"); - find mustInstanceOfETypeParameter_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral"); - find mustInstanceOfEEnum_class(problem,interpretation,container); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnumLiteral_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier"); - find mustInstanceOfEClassifier_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_ETypeParameter_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAttribute_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EClass_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EDataType_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EOperation_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation"); - find mustInstanceOfEModelElement_class(problem,interpretation,container); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAnnotation_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EParameter_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EObject_class_by_contents_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EObject_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EReference_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnum_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EPackage_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} - -////////// -// 4.2 Type refinement -////////// -pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); -} -pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); -} -pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); -} -pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); -} -pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); -} -pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); -} -pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); -} -pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); -} - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_eAttributeType_reference_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - find mustInstanceOfEDataType_class(problem,interpretation,to); - find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); - neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); -} -pattern refineRelation_references_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - find mustInstanceOfEObject_class(problem,interpretation,to); - find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); -} -pattern refineRelation_eSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEOperation_class(problem,interpretation,to); - find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,to); - find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEGenericType_class(problem,interpretation,to); - find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); -} -pattern refineRelation_eExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEOperation_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); - neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); -} -pattern refineRelation_eOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to); -} -pattern refineRelation_eReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); -} -pattern refineRelation_eKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to); -} -pattern refineRelation_eType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_eRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_eTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfETypeParameter_class(problem,interpretation,to); - find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_eClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_iD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to); - neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to); -} -pattern refineRelation_source_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - StringElement(to); - find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); -} -pattern refineRelation_abstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to); -} -pattern refineRelation_interface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to); -} -pattern refineRelation_instanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); -} -pattern refineRelation_instanceTypeName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); -} -pattern refineRelation_serializable_attribute_EDataType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEDataType_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to); - neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to); -} -pattern refineRelation_value_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); -} -pattern refineRelation_literal_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - StringElement(to); - find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); -} -pattern refineRelation_name_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfENamedElement_class(problem,interpretation,from); - StringElement(to); - find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to); - neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to); -} -pattern refineRelation_nsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); -} -pattern refineRelation_nsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); -} -pattern refineRelation_containment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to); -} -pattern refineRelation_container_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to); -} -pattern refineRelation_resolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); -} -pattern refineRelation_changeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_volatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_transient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - StringElement(to); - find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_unsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_derived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); -} -pattern refineRelation_ordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_unique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_lowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_upperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_many_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_required_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); -} -pattern refineRelation_key_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); -} -pattern refineRelation_value_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); -} -import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" - -////////// -// 0. Util -////////// -private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { - PartialInterpretation.problem(interpretation,problem); -} - -///////////////////////// -// 0.1 Existence -///////////////////////// -private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find interpretation(problem,interpretation); - LogicProblem.elements(problem,element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); -} - -private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find mustExist(problem,interpretation,element); -} or { - find interpretation(problem,interpretation); - neg find elementCloseWorld(element); - PartialInterpretation.openWorldElements(interpretation,element); -} - -private pattern elementCloseWorld(element:DefinedElement) { - PartialInterpretation.openWorldElements(i,element); - PartialInterpretation.maxNewElements(i,0); -} or { - Scope.targetTypeInterpretation(scope,interpretation); - PartialTypeInterpratation.elements(interpretation,element); - Scope.maxNewElements(scope,0); -} - -//////////////////////// -// 0.2 Equivalence -//////////////////////// -pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { - find mayExist(problem,interpretation,a); - find mayExist(problem,interpretation,b); - a == b; -} - -//////////////////////// -// 0.3 Required Patterns by TypeIndexer -//////////////////////// -private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { - find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); -} - -private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { - find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - TypeDefinition.elements(type,element); -} or { - find interpretation(problem,interpretation); - find typeInterpretation(problem,interpretation,type,typeInterpretation); - PartialComplexTypeInterpretation.elements(typeInterpretation,element); -} - -private pattern isPrimitive(element: PrimitiveElement) { - PrimitiveElement(element); -} - -////////// -// 1. Problem-Specific Base Indexers -////////// -// 1.1 Type Indexers -////////// -// 1.1.1 primitive Type Indexers -////////// - -////////// -// 1.1.2 domain-specific Type Indexers -////////// -/** - * An element must be an instance of type "EAttribute class". - */ -private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAttribute class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAttribute class"); -} - -/** - * An element may be an instance of type "EAttribute class". - */ -private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEAttribute_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EAnnotation class". - */ -private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAnnotation class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAnnotation class"); -} - -/** - * An element may be an instance of type "EAnnotation class". - */ -private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EClass class". - */ -private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClass class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClass class"); -} - -/** - * An element may be an instance of type "EClass class". - */ -private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEClass_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EClassifier class". - */ -private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClassifier class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClassifier class"); -} - -/** - * An element may be an instance of type "EClassifier class". - */ -private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEClassifier_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EDataType class". - */ -private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EDataType class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EDataType class"); -} - -/** - * An element may be an instance of type "EDataType class". - */ -private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEDataType_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EEnum class". - */ -private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnum class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnum class"); -} - -/** - * An element may be an instance of type "EEnum class". - */ -private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEEnum_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EEnumLiteral class". - */ -private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnumLiteral class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnumLiteral class"); -} - -/** - * An element may be an instance of type "EEnumLiteral class". - */ -private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class". - */ -private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class"); -} - -/** - * An element may be an instance of type "EModelElement class". - */ -private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEModelElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class". - */ -private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class"); -} - -/** - * An element may be an instance of type "ENamedElement class". - */ -private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfENamedElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EObject class". - */ -private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EObject class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EObject class"); -} - -/** - * An element may be an instance of type "EObject class". - */ -private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEObject_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EOperation class". - */ -private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EOperation class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EOperation class"); -} - -/** - * An element may be an instance of type "EOperation class". - */ -private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEOperation_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class". - */ -private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class"); -} - -/** - * An element may be an instance of type "EPackage class". - */ -private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EParameter class". - */ -private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EParameter class"); -} - -/** - * An element may be an instance of type "EParameter class". - */ -private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEParameter_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EReference class". - */ -private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EReference class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EReference class"); -} - -/** - * An element may be an instance of type "EReference class". - */ -private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEReference_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EStructuralFeature class". - */ -private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStructuralFeature class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStructuralFeature class"); -} - -/** - * An element may be an instance of type "EStructuralFeature class". - */ -private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ETypedElement class". - */ -private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypedElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypedElement class"); -} - -/** - * An element may be an instance of type "ETypedElement class". - */ -private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypedElement_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EStringToStringMapEntry class". - */ -private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStringToStringMapEntry class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStringToStringMapEntry class"); -} - -/** - * An element may be an instance of type "EStringToStringMapEntry class". - */ -private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EGenericType class". - */ -private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EGenericType class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EGenericType class"); -} - -/** - * An element may be an instance of type "EGenericType class". - */ -private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEGenericType_class(problem,interpretation,element); } -/** - * An element must be an instance of type "ETypeParameter class". - */ -private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypeParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypeParameter class"); -} - -/** - * An element may be an instance of type "ETypeParameter class". - */ -private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class DefinedPart". - */ -private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class DefinedPart"); -} - -/** - * An element may be an instance of type "EModelElement class DefinedPart". - */ -private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class UndefinedPart". - */ -private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class UndefinedPart"); -} - -/** - * An element may be an instance of type "EModelElement class UndefinedPart". - */ -private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class DefinedPart"); -} - -/** - * An element may be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class UndefinedPart". - */ -private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class UndefinedPart"); -} - -/** - * An element may be an instance of type "ENamedElement class UndefinedPart". - */ -private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class DefinedPart". - */ -private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class DefinedPart"); -} - -/** - * An element may be an instance of type "EPackage class DefinedPart". - */ -private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class UndefinedPart". - */ -private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class UndefinedPart"); -} - -/** - * An element may be an instance of type "EPackage class UndefinedPart". - */ -private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); } - -////////// -// 1.2 Relation Declaration Indexers -////////// -/** - * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target) - */ -private pattern mustInRelationeAttributeType_reference_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target) - */ -private pattern mayInRelationeAttributeType_reference_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - find mayInstanceOfEDataType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []details reference EAnnotation(source,target) - */ -private pattern mustInRelationdetails_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>details reference EAnnotation(source,target) - */ -private pattern mayInRelationdetails_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target) - */ -private pattern mustInRelationeModelElement_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target) - */ -private pattern mayInRelationeModelElement_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEModelElement_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []contents reference EAnnotation(source,target) - */ -private pattern mustInRelationcontents_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target) - */ -private pattern mayInRelationcontents_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []references reference EAnnotation(source,target) - */ -private pattern mustInRelationreferences_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>references reference EAnnotation(source,target) - */ -private pattern mayInRelationreferences_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); -} or { - find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); -} or { - find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eOperations reference EClass(source,target) - */ -private pattern mustInRelationeOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eOperations reference EClass(source,target) - */ -private pattern mayInRelationeOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target) - */ -private pattern mustInRelationeAllAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target) - */ -private pattern mayInRelationeAllAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target) - */ -private pattern mustInRelationeAllReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target) - */ -private pattern mayInRelationeAllReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eReferences reference EClass(source,target) - */ -private pattern mustInRelationeReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eReferences reference EClass(source,target) - */ -private pattern mayInRelationeReferences_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAttributes reference EClass(source,target) - */ -private pattern mustInRelationeAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target) - */ -private pattern mayInRelationeAttributes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target) - */ -private pattern mustInRelationeAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target) - */ -private pattern mayInRelationeAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target) - */ -private pattern mustInRelationeAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target) - */ -private pattern mayInRelationeAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); -} or { - find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target) - */ -private pattern mustInRelationeAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target) - */ -private pattern mayInRelationeAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); -} or { - find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeAllSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeAllSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); -} or { - find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target) - */ -private pattern mustInRelationeIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target) - */ -private pattern mayInRelationeIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target) - */ -private pattern mustInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target) - */ -private pattern mayInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); -} or { - find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target) - */ -private pattern mustInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target) - */ -private pattern mayInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target) - */ -private pattern mustInRelationeTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target) - */ -private pattern mayInRelationeTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target) - */ -private pattern mustInRelationeLiterals_reference_EEnum( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target) - */ -private pattern mayInRelationeLiterals_reference_EEnum( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnum_class(problem,interpretation,source); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target) - */ -private pattern mustInRelationeEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target) - */ -private pattern mayInRelationeEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - find mayInstanceOfEEnum_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target) - */ -private pattern mustInRelationeAnnotations_reference_EModelElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target) - */ -private pattern mayInRelationeAnnotations_reference_EModelElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEModelElement_class(problem,interpretation,source); - find mayInstanceOfEAnnotation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target) - */ -private pattern mustInRelationeContainingClass_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target) - */ -private pattern mayInRelationeContainingClass_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target) - */ -private pattern mustInRelationeTypeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target) - */ -private pattern mayInRelationeTypeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eParameters reference EOperation(source,target) - */ -private pattern mustInRelationeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target) - */ -private pattern mayInRelationeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEParameter_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target) - */ -private pattern mustInRelationeExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target) - */ -private pattern mayInRelationeExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); -} or { - find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target) - */ -private pattern mustInRelationeGenericExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target) - */ -private pattern mayInRelationeGenericExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target) - */ -private pattern mustInRelationeClassifiers_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target) - */ -private pattern mayInRelationeClassifiers_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target) - */ -private pattern mustInRelationeSubpackages_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target) - */ -private pattern mayInRelationeSubpackages_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target) - */ -private pattern mustInRelationeSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target) - */ -private pattern mayInRelationeSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eOperation reference EParameter(source,target) - */ -private pattern mustInRelationeOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target) - */ -private pattern mayInRelationeOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEParameter_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eOpposite reference EReference(source,target) - */ -private pattern mustInRelationeOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target) - */ -private pattern mayInRelationeOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target) - */ -private pattern mustInRelationeReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target) - */ -private pattern mayInRelationeReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eKeys reference EReference(source,target) - */ -private pattern mustInRelationeKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eKeys reference EReference(source,target) - */ -private pattern mayInRelationeKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target) - */ -private pattern mustInRelationeContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target) - */ -private pattern mayInRelationeContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eType reference ETypedElement(source,target) - */ -private pattern mustInRelationeType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target) - */ -private pattern mayInRelationeType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target) - */ -private pattern mustInRelationeGenericType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target) - */ -private pattern mayInRelationeGenericType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target) - */ -private pattern mustInRelationeUpperBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target) - */ -private pattern mayInRelationeUpperBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target) - */ -private pattern mustInRelationeTypeArguments_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target) - */ -private pattern mayInRelationeTypeArguments_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target) - */ -private pattern mustInRelationeRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target) - */ -private pattern mayInRelationeRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target) - */ -private pattern mustInRelationeLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target) - */ -private pattern mayInRelationeLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target) - */ -private pattern mustInRelationeTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target) - */ -private pattern mayInRelationeTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target) - */ -private pattern mustInRelationeClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target) - */ -private pattern mayInRelationeClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target) - */ -private pattern mustInRelationeBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target) - */ -private pattern mayInRelationeBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypeParameter_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []iD attribute EAttribute(source,target) - */ -private pattern mustInRelationiD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target) - */ -private pattern mayInRelationiD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []source attribute EAnnotation(source,target) - */ -private pattern mustInRelationsource_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target) - */ -private pattern mayInRelationsource_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []abstract attribute EClass(source,target) - */ -private pattern mustInRelationabstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>abstract attribute EClass(source,target) - */ -private pattern mayInRelationabstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []interface attribute EClass(source,target) - */ -private pattern mustInRelationinterface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>interface attribute EClass(source,target) - */ -private pattern mayInRelationinterface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target) - */ -private pattern mustInRelationinstanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target) - */ -private pattern mayInRelationinstanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target) - */ -private pattern mustInRelationinstanceTypeName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target) - */ -private pattern mayInRelationinstanceTypeName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []serializable attribute EDataType(source,target) - */ -private pattern mustInRelationserializable_attribute_EDataType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target) - */ -private pattern mayInRelationserializable_attribute_EDataType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEDataType_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationvalue_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationvalue_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []name attribute ENamedElement(source,target) - */ -private pattern mustInRelationname_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target) - */ -private pattern mayInRelationname_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfENamedElement_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target) - */ -private pattern mustInRelationnsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target) - */ -private pattern mayInRelationnsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target) - */ -private pattern mustInRelationnsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target) - */ -private pattern mayInRelationnsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []containment attribute EReference(source,target) - */ -private pattern mustInRelationcontainment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>containment attribute EReference(source,target) - */ -private pattern mayInRelationcontainment_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []container attribute EReference(source,target) - */ -private pattern mustInRelationcontainer_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>container attribute EReference(source,target) - */ -private pattern mayInRelationcontainer_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target) - */ -private pattern mustInRelationresolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target) - */ -private pattern mayInRelationresolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationchangeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationchangeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationvolatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationvolatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationtransient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationtransient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationunsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationunsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target) - */ -private pattern mustInRelationderived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target) - */ -private pattern mayInRelationderived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target) - */ -private pattern mustInRelationordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target) - */ -private pattern mayInRelationordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target) - */ -private pattern mustInRelationunique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target) - */ -private pattern mayInRelationunique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target) - */ -private pattern mustInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target) - */ -private pattern mayInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target) - */ -private pattern mustInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target) - */ -private pattern mayInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []many attribute ETypedElement(source,target) - */ -private pattern mustInRelationmany_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target) - */ -private pattern mayInRelationmany_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []required attribute ETypedElement(source,target) - */ -private pattern mustInRelationrequired_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target) - */ -private pattern mayInRelationrequired_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target) - */ -private pattern mustInRelationkey_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target) - */ -private pattern mayInRelationkey_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target) - */ -private pattern mustInRelationvalue_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target) - */ -private pattern mayInRelationvalue_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target); -} - -////////// -// 1.3 Relation Definition Indexers -////////// - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or - - { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or - - { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or - - { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); -} - -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustInstanceOfEAttribute_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustInstanceOfEReference_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} - -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) -{ - find interpretation(problem,interpretation); - find mustInstanceOfEOperation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEGenericType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAttribute_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEDataType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClassifier_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAnnotation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfETypeParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEReference_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnum_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfETypedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClass_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -} -pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation"); - find mustInstanceOfEModelElement_class(problem,interpretation,container); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAnnotation_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnum_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EParameter_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EPackage_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EClass_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); } -pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); } -pattern createObject_EOperation_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); } -pattern createObject_EReference_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); } -pattern createObject_EObject_class_by_contents_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); } -pattern createObject_EObject_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); } -pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral"); - find mustInstanceOfEEnum_class(problem,interpretation,container); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); } -pattern createObject_EEnumLiteral_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); } -pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAttribute_class( + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); } -pattern createObject_EDataType_class( +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass( +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); } -pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation( +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement( +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement"); - find mustInstanceOfETypedElement_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); } -pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType( +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType( +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); } -pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType( +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter( +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter"); - find mustInstanceOfETypeParameter_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); } -pattern createObject_EGenericType_class( +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation( +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); } -pattern createObject_EStringToStringMapEntry_class( +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier( +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier"); - find mustInstanceOfEClassifier_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); } -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation( +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_ETypeParameter_class( +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} - -////////// -// 4.2 Type refinement -////////// -pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); -} -pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); -} -pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); -} -pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_eAttributeType_reference_EAttribute( +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - find mustInstanceOfEDataType_class(problem,interpretation,to); - find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); - neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_references_reference_EAnnotation( +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - find mustInstanceOfEObject_class(problem,interpretation,to); - find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } -pattern refineRelation_eSuperTypes_reference_EClass( +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eAllAttributes_reference_EClass( +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } -pattern refineRelation_eAllReferences_reference_EClass( +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eReferences_reference_EClass( +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); } -pattern refineRelation_eAttributes_reference_EClass( +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eAllContainments_reference_EClass( +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } -pattern refineRelation_eAllOperations_reference_EClass( +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEOperation_class(problem,interpretation,to); - find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eAllStructuralFeatures_reference_EClass( +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,to); - find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } -pattern refineRelation_eAllSuperTypes_reference_EClass( +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eIDAttribute_reference_EClass( +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } -pattern refineRelation_eAllGenericSuperTypes_reference_EClass( +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEGenericType_class(problem,interpretation,to); - find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eExceptions_reference_EOperation( +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEOperation_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); - neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } -pattern refineRelation_eOpposite_reference_EReference( + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; } -pattern refineRelation_eReferenceType_reference_EReference( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); } -pattern refineRelation_eKeys_reference_EReference( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + var_T, var_I) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; } -pattern refineRelation_eType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) { + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -pattern refineRelation_eRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -pattern refineRelation_eTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfETypeParameter_class(problem,interpretation,to); - find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -pattern refineRelation_eClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_iD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to); - neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to); -} -pattern refineRelation_source_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - StringElement(to); - find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); -} -pattern refineRelation_abstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to); -} -pattern refineRelation_interface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to); -} -pattern refineRelation_instanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -pattern refineRelation_instanceTypeName_attribute_EClassifier( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_serializable_attribute_EDataType( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEDataType_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to); - neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_value_attribute_EEnumLiteral( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_literal_attribute_EEnumLiteral( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - StringElement(to); - find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_name_attribute_ENamedElement( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfENamedElement_class(problem,interpretation,from); - StringElement(to); - find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to); - neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_nsURI_attribute_EPackage( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_nsPrefix_attribute_EPackage( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_containment_attribute_EReference( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_container_attribute_EReference( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_resolveProxies_attribute_EReference( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_changeable_attribute_EStructuralFeature( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_volatile_attribute_EStructuralFeature( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_transient_attribute_EStructuralFeature( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature( +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - StringElement(to); - find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_unsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineRelation_derived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineRelation_ordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineRelation_unique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -pattern refineRelation_lowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } -pattern refineRelation_upperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -pattern refineRelation_many_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } -pattern refineRelation_required_attribute_ETypedElement( + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -pattern refineRelation_key_attribute_EStringToStringMapEntry( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -pattern refineRelation_value_attribute_EStringToStringMapEntry( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" @@ -57207,22 +40860,22 @@ private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, inter { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); @@ -57251,22 +40904,20 @@ private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProb { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); @@ -57295,20 +40946,20 @@ private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); @@ -57337,9 +40988,9 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); @@ -57347,9 +40998,9 @@ private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpret } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); @@ -57379,21 +41030,21 @@ private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or @@ -57421,20 +41072,20 @@ private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, int { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); @@ -57463,22 +41114,22 @@ private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); @@ -57507,23 +41158,23 @@ private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or @@ -57551,25 +41202,25 @@ private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpre { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or @@ -57595,69 +41246,6 @@ private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpr */ private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfFunctionType_enum(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class DefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); -} - -/** - * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". - */ -private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers @@ -58258,6 +41846,103 @@ private pattern mayInRelationtype_attribute_Function( ////////// // 1.3 Relation Definition Indexers ////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} ////////// // 1.4 Containment Indexer @@ -58289,6 +41974,11 @@ private pattern mustTransitiveContains(source,target) { ////////// // 2.1 Invalidated by WF Queries ////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} ////////// // 3. Unfinishedness Indexers @@ -58326,6 +42016,11 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} ////////// // 4. Refinement Indexers @@ -58335,15 +42030,15 @@ pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustInstanceOfInformationLink_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunction_class(problem,interpretation,root); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -58351,19 +42046,15 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfInformationLink_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustInstanceOfFunction_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -58371,158 +42062,184 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); find mustExist(problem, interpretation, root); -}or{ +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ find interpretation(problem,interpretation); - find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalOutput_class( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); - find mustInstanceOfFunctionalData_class(problem,interpretation,container); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); - find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FAMTerminator_class( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); - find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); - find mustInstanceOfFunctionalElement_class(problem,interpretation,container); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); - find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInterface_class( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); - find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); - find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); - find mustInstanceOfFunction_class(problem,interpretation,container); - find mayInstanceOfFunction_class(problem,interpretation,newObject); - find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Function_class( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); - find mayInstanceOfFunction_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -58556,118 +42273,88 @@ pattern createObject_InformationLink_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); - find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FunctionalInput_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); - find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); -} -pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); - neg find mustInstanceOfInformationLink_class(problem,interpretation,element); -} -pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunction_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); - neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); neg find mustInstanceOfInformationLink_class(problem,interpretation,element); - neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } ////////// @@ -58804,1130 +42491,869 @@ private pattern isPrimitive(element: PrimitiveElement) { // 1.1.2 domain-specific Type Indexers ////////// /** - * An element must be an instance of type "EAttribute class". + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAttribute class"); +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAttribute class"); + Type.name(type,"FunctionalElement class"); } /** - * An element may be an instance of type "EAttribute class". + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find scopeDisallowsNewEAttribute_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEAttribute_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } /** - * An element must be an instance of type "EAnnotation class". + * An element must be an instance of type "FunctionalArchitectureModel class". */ -private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EAnnotation class"); +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EAnnotation class"); + Type.name(type,"FunctionalArchitectureModel class"); } /** - * An element may be an instance of type "EAnnotation class". + * An element may be an instance of type "FunctionalArchitectureModel class". */ -private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEAnnotation_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } /** - * An element must be an instance of type "EClass class". + * An element must be an instance of type "Function class". */ -private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClass class"); +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClass class"); + Type.name(type,"Function class"); } /** - * An element may be an instance of type "EClass class". + * An element may be an instance of type "Function class". */ -private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEClass_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEClass_class(problem,interpretation,element); } +{ find mustInstanceOfFunction_class(problem,interpretation,element); } /** - * An element must be an instance of type "EClassifier class". + * An element must be an instance of type "FAMTerminator class". */ -private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EClassifier class"); +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EClassifier class"); + Type.name(type,"FAMTerminator class"); } /** - * An element may be an instance of type "EClassifier class". + * An element may be an instance of type "FAMTerminator class". */ -private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEClassifier_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEClassifier_class(problem,interpretation,element); } +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } /** - * An element must be an instance of type "EDataType class". + * An element must be an instance of type "InformationLink class". */ -private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EDataType class"); +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EDataType class"); + Type.name(type,"InformationLink class"); } /** - * An element may be an instance of type "EDataType class". + * An element may be an instance of type "InformationLink class". */ -private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEDataType_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEDataType_class(problem,interpretation,element); } +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } /** - * An element must be an instance of type "EEnum class". + * An element must be an instance of type "FunctionalInterface class". */ -private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnum class"); +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnum class"); + Type.name(type,"FunctionalInterface class"); } /** - * An element may be an instance of type "EEnum class". + * An element may be an instance of type "FunctionalInterface class". */ -private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnum_class(problem, interpretation); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEEnum_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } /** - * An element must be an instance of type "EEnumLiteral class". + * An element must be an instance of type "FunctionalInput class". */ -private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EEnumLiteral class"); +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EEnumLiteral class"); + Type.name(type,"FunctionalInput class"); } /** - * An element may be an instance of type "EEnumLiteral class". + * An element may be an instance of type "FunctionalInput class". */ -private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } /** - * An element must be an instance of type "EModelElement class". + * An element must be an instance of type "FunctionalOutput class". */ -private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class"); +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class"); + Type.name(type,"FunctionalOutput class"); } /** - * An element may be an instance of type "EModelElement class". + * An element may be an instance of type "FunctionalOutput class". */ -private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class(problem, interpretation); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfEModelElement_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } /** - * An element must be an instance of type "ENamedElement class". + * An element must be an instance of type "FunctionalData class". */ -private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class"); +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class"); + Type.name(type,"FunctionalData class"); } /** - * An element may be an instance of type "ENamedElement class". + * An element may be an instance of type "FunctionalData class". */ -private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class(problem, interpretation); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfENamedElement_class(problem,interpretation,element); } +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } /** - * An element must be an instance of type "EObject class". + * An element must be an instance of type "FunctionType enum". */ -private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EObject class"); +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EObject class"); + Type.name(type,"FunctionType enum"); } /** - * An element may be an instance of type "EObject class". - */ -private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEObject_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EOperation class". + * An element may be an instance of type "FunctionType enum". */ -private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EOperation class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EOperation class"); -} +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +////////// +// 1.2 Relation Declaration Indexers +////////// /** - * An element may be an instance of type "EOperation class". + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) */ -private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewEOperation_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEOperation_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class". - */ -private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EPackage class". + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) */ -private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class(problem,interpretation,element); } + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} /** - * An element must be an instance of type "EParameter class". + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ -private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EParameter class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EParameter class". + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ -private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find scopeDisallowsNewEParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEParameter_class(problem,interpretation,element); } + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} /** - * An element must be an instance of type "EReference class". + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ -private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EReference class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EReference class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EReference class". + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) */ -private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find scopeDisallowsNewEReference_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEReference_class(problem,interpretation,element); } + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} /** - * An element must be an instance of type "EStructuralFeature class". + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStructuralFeature class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStructuralFeature class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EStructuralFeature class". + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); } + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} /** - * An element must be an instance of type "ETypedElement class". + * Matcher for detecting tuples t where []subElements reference Function(source,target) */ -private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypedElement class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypedElement class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "ETypedElement class". + * Matcher for detecting tuples t where <>subElements reference Function(source,target) */ -private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find scopeDisallowsNewETypedElement_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypedElement_class(problem,interpretation,element); } + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} /** - * An element must be an instance of type "EStringToStringMapEntry class". + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) */ -private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EStringToStringMapEntry class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EStringToStringMapEntry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EStringToStringMapEntry class". + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) */ -private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); } + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} /** - * An element must be an instance of type "EGenericType class". + * Matcher for detecting tuples t where []from reference InformationLink(source,target) */ -private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EGenericType class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EGenericType class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EGenericType class". + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) */ -private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEGenericType_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEGenericType_class(problem,interpretation,element); } + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} /** - * An element must be an instance of type "ETypeParameter class". + * Matcher for detecting tuples t where []to reference InformationLink(source,target) */ -private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ETypeParameter class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ETypeParameter class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "ETypeParameter class". + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) */ -private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewETypeParameter_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class DefinedPart". - */ -private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class DefinedPart"); + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } - /** - * An element may be an instance of type "EModelElement class DefinedPart". - */ -private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EModelElement class UndefinedPart". + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) */ -private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EModelElement class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EModelElement class UndefinedPart"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EModelElement class UndefinedPart". + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) */ -private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); - neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class DefinedPart"); + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } - -/** - * An element may be an instance of type "ENamedElement class DefinedPart". - */ -private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); } /** - * An element must be an instance of type "ENamedElement class UndefinedPart". + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) */ -private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"ENamedElement class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"ENamedElement class UndefinedPart"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "ENamedElement class UndefinedPart". + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) */ -private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "EPackage class DefinedPart". - */ -private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class DefinedPart"); + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } - -/** - * An element may be an instance of type "EPackage class DefinedPart". - */ -private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); } /** - * An element must be an instance of type "EPackage class UndefinedPart". + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) */ -private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"EPackage class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"EPackage class UndefinedPart"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "EPackage class UndefinedPart". + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) */ -private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); } - -////////// -// 1.2 Relation Declaration Indexers -////////// + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} /** - * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target) + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mustInRelationeAttributeType_reference_EAttribute( +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target) + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mayInRelationeAttributeType_reference_EAttribute( +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -59936,33 +43362,38 @@ private pattern mayInRelationeAttributeType_reference_EAttribute( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - find mayInstanceOfEDataType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []details reference EAnnotation(source,target) + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) */ -private pattern mustInRelationdetails_reference_EAnnotation( +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>details reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) */ -private pattern mayInRelationdetails_reference_EAnnotation( +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -59971,34 +43402,42 @@ private pattern mayInRelationdetails_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) */ -private pattern mustInRelationeModelElement_reference_EAnnotation( +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) */ -private pattern mayInRelationeModelElement_reference_EAnnotation( +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -60007,11 +43446,11 @@ private pattern mayInRelationeModelElement_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEModelElement_class(problem,interpretation,target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); check(numberOfExistingReferences < 1); // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents @@ -60019,26 +43458,26 @@ private pattern mayInRelationeModelElement_reference_EAnnotation( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []contents reference EAnnotation(source,target) + * Matcher for detecting tuples t where []type attribute Function(source,target) */ -private pattern mustInRelationcontents_reference_EAnnotation( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target) + * Matcher for detecting tuples t where <>type attribute Function(source,target) */ -private pattern mayInRelationcontents_reference_EAnnotation( +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -60047,798 +43486,987 @@ private pattern mayInRelationcontents_reference_EAnnotation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } -/** - * Matcher for detecting tuples t where []references reference EAnnotation(source,target) - */ -private pattern mustInRelationreferences_reference_EAnnotation( + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>references reference EAnnotation(source,target) - */ -private pattern mayInRelationreferences_reference_EAnnotation( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - find mayInstanceOfEObject_class(problem,interpretation,target); -} or { - find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeSuperTypes_reference_EClass( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeSuperTypes_reference_EClass( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); -} or { - find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eOperations reference EClass(source,target) - */ -private pattern mustInRelationeOperations_reference_EClass( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eOperations reference EClass(source,target) - */ -private pattern mayInRelationeOperations_reference_EClass( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target) - */ -private pattern mustInRelationeAllAttributes_reference_EClass( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target) - */ -private pattern mayInRelationeAllAttributes_reference_EClass( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target) - */ -private pattern mustInRelationeAllReferences_reference_EClass( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target) - */ -private pattern mayInRelationeAllReferences_reference_EClass( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eReferences reference EClass(source,target) - */ -private pattern mustInRelationeReferences_reference_EClass( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eReferences reference EClass(source,target) - */ -private pattern mayInRelationeReferences_reference_EClass( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eAttributes reference EClass(source,target) - */ -private pattern mustInRelationeAttributes_reference_EClass( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target) - */ -private pattern mayInRelationeAttributes_reference_EClass( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); -} or { - find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target) - */ -private pattern mustInRelationeAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target) - */ -private pattern mayInRelationeAllContainments_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); -} or { - find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target) - */ -private pattern mustInRelationeAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target) - */ -private pattern mayInRelationeAllOperations_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); -} or { - find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target) - */ -private pattern mustInRelationeAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target) - */ -private pattern mayInRelationeAllStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); -} or { - find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target) - */ -private pattern mustInRelationeAllSuperTypes_reference_EClass( +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target) - */ -private pattern mayInRelationeAllSuperTypes_reference_EClass( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); -} or { - find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target) - */ -private pattern mustInRelationeIDAttribute_reference_EClass( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target) - */ -private pattern mayInRelationeIDAttribute_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); } or { - find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target); + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); } + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// /** - * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target) + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); } + /** - * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target) + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInRelationeStructuralFeatures_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEStructuralFeature_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target) + * An element must be an instance of type "FunctionalArchitectureModel class". */ -private pattern mustInRelationeGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); } + /** - * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target) + * An element may be an instance of type "FunctionalArchitectureModel class". */ -private pattern mayInRelationeGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target) + * An element must be an instance of type "Function class". */ -private pattern mustInRelationeAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); } + /** - * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target) + * An element may be an instance of type "Function class". */ -private pattern mayInRelationeAllGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target) + * An element must be an instance of type "FAMTerminator class". */ -private pattern mustInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); } + /** - * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target) + * An element may be an instance of type "FAMTerminator class". */ -private pattern mayInRelationePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target) + * An element must be an instance of type "InformationLink class". */ -private pattern mustInRelationeTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); } + /** - * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target) + * An element may be an instance of type "InformationLink class". */ -private pattern mayInRelationeTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target) + * An element must be an instance of type "FunctionalInterface class". */ -private pattern mustInRelationeLiterals_reference_EEnum( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); } + /** - * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target) + * An element may be an instance of type "FunctionalInterface class". */ -private pattern mayInRelationeLiterals_reference_EEnum( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnum_class(problem,interpretation,source); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target) + * An element must be an instance of type "FunctionalInput class". */ -private pattern mustInRelationeEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); } + /** - * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target) + * An element may be an instance of type "FunctionalInput class". */ -private pattern mayInRelationeEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - find mayInstanceOfEEnum_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target) + * An element must be an instance of type "FunctionalOutput class". */ -private pattern mustInRelationeAnnotations_reference_EModelElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); } + /** - * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target) + * An element may be an instance of type "FunctionalOutput class". */ -private pattern mayInRelationeAnnotations_reference_EModelElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEModelElement_class(problem,interpretation,source); - find mayInstanceOfEAnnotation_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target) + * An element must be an instance of type "FunctionalData class". */ -private pattern mustInRelationeContainingClass_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); } + /** - * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target) + * An element may be an instance of type "FunctionalData class". */ -private pattern mayInRelationeContainingClass_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target) + * An element must be an instance of type "FunctionType enum". */ -private pattern mustInRelationeTypeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); } + /** - * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target) + * An element may be an instance of type "FunctionType enum". */ -private pattern mayInRelationeTypeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); -} +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// /** - * Matcher for detecting tuples t where []eParameters reference EOperation(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) */ -private pattern mustInRelationeParameters_reference_EOperation( +private pattern mustInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) */ -private pattern mayInRelationeParameters_reference_EOperation( +private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -60847,11 +44475,15 @@ private pattern mayInRelationeParameters_reference_EOperation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEParameter_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); // There are "numberOfExistingReferences" currently existing instances of the reference to the target, // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_); + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents @@ -60859,26 +44491,26 @@ private pattern mayInRelationeParameters_reference_EOperation( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target) + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ -private pattern mustInRelationeExceptions_reference_EOperation( +private pattern mustInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ -private pattern mayInRelationeExceptions_reference_EOperation( +private pattern mayInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -60887,29 +44519,33 @@ private pattern mayInRelationeExceptions_reference_EOperation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target); + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target) + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ -private pattern mustInRelationeGenericExceptions_reference_EOperation( +private pattern mustInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target) + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) */ -private pattern mayInRelationeGenericExceptions_reference_EOperation( +private pattern mayInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -60918,34 +44554,38 @@ private pattern mayInRelationeGenericExceptions_reference_EOperation( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEOperation_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); + neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target) + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mustInRelationeClassifiers_reference_EPackage( +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target) + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mayInRelationeClassifiers_reference_EPackage( +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -60954,38 +44594,34 @@ private pattern mayInRelationeClassifiers_reference_EPackage( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target) + * Matcher for detecting tuples t where []subElements reference Function(source,target) */ -private pattern mustInRelationeSubpackages_reference_EPackage( +private pattern mustInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target) + * Matcher for detecting tuples t where <>subElements reference Function(source,target) */ -private pattern mayInRelationeSubpackages_reference_EPackage( +private pattern mayInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -60994,11 +44630,11 @@ private pattern mayInRelationeSubpackages_reference_EPackage( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference to the target, // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_); + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents @@ -61006,26 +44642,26 @@ private pattern mayInRelationeSubpackages_reference_EPackage( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target) + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) */ -private pattern mustInRelationeSuperPackage_reference_EPackage( +private pattern mustInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target) + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) */ -private pattern mayInRelationeSuperPackage_reference_EPackage( +private pattern mayInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -61034,38 +44670,42 @@ private pattern mayInRelationeSuperPackage_reference_EPackage( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - find mayInstanceOfEPackage_class(problem,interpretation,target); + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target); + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eOperation reference EParameter(source,target) + * Matcher for detecting tuples t where []from reference InformationLink(source,target) */ -private pattern mustInRelationeOperation_reference_EParameter( +private pattern mustInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target) + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) */ -private pattern mayInRelationeOperation_reference_EParameter( +private pattern mayInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -61074,11 +44714,11 @@ private pattern mayInRelationeOperation_reference_EParameter( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEParameter_class(problem,interpretation,source); - find mayInstanceOfEOperation_class(problem,interpretation,target); + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); check(numberOfExistingReferences < 1); // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents @@ -61086,61 +44726,26 @@ private pattern mayInRelationeOperation_reference_EParameter( // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []eOpposite reference EReference(source,target) - */ -private pattern mustInRelationeOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target) - */ -private pattern mayInRelationeOpposite_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEReference_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target); + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target) + * Matcher for detecting tuples t where []to reference InformationLink(source,target) */ -private pattern mustInRelationeReferenceType_reference_EReference( +private pattern mustInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target) + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) */ -private pattern mayInRelationeReferenceType_reference_EReference( +private pattern mayInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -61149,33 +44754,33 @@ private pattern mayInRelationeReferenceType_reference_EReference( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target); + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eKeys reference EReference(source,target) + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) */ -private pattern mustInRelationeKeys_reference_EReference( +private pattern mustInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eKeys reference EReference(source,target) + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) */ -private pattern mayInRelationeKeys_reference_EReference( +private pattern mayInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -61184,29 +44789,38 @@ private pattern mayInRelationeKeys_reference_EReference( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - find mayInstanceOfEAttribute_class(problem,interpretation,target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target); + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target) + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) */ -private pattern mustInRelationeContainingClass_reference_EStructuralFeature( +private pattern mustInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target) + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) */ -private pattern mayInRelationeContainingClass_reference_EStructuralFeature( +private pattern mayInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -61215,38 +44829,42 @@ private pattern mayInRelationeContainingClass_reference_EStructuralFeature( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - find mayInstanceOfEClass_class(problem,interpretation,target); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target); + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eType reference ETypedElement(source,target) + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) */ -private pattern mustInRelationeType_reference_ETypedElement( +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target) + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) */ -private pattern mayInRelationeType_reference_ETypedElement( +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -61255,33 +44873,33 @@ private pattern mayInRelationeType_reference_ETypedElement( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); } or { - find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target); + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target) + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mustInRelationeGenericType_reference_ETypedElement( +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target) + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) */ -private pattern mayInRelationeGenericType_reference_ETypedElement( +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -61290,38 +44908,38 @@ private pattern mayInRelationeGenericType_reference_ETypedElement( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target) + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) */ -private pattern mustInRelationeUpperBound_reference_EGenericType( +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target) + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) */ -private pattern mayInRelationeUpperBound_reference_EGenericType( +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -61330,38 +44948,42 @@ private pattern mayInRelationeUpperBound_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) */ -private pattern mustInRelationeTypeArguments_reference_EGenericType( +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) */ -private pattern mayInRelationeTypeArguments_reference_EGenericType( +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -61370,34 +44992,38 @@ private pattern mayInRelationeTypeArguments_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); + neg find mustContains4(problem,interpretation,source,_); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { - find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target) + * Matcher for detecting tuples t where []type attribute Function(source,target) */ -private pattern mustInRelationeRawType_reference_EGenericType( +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target) + * Matcher for detecting tuples t where <>type attribute Function(source,target) */ -private pattern mayInRelationeRawType_reference_EGenericType( +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -61406,1054 +45032,987 @@ private pattern mayInRelationeRawType_reference_EGenericType( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target); + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); } -/** - * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target) - */ -private pattern mustInRelationeLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); } -/** - * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target) - */ -private pattern mayInRelationeLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); } -/** - * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target) - */ -private pattern mustInRelationeTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target) - */ -private pattern mayInRelationeTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfETypeParameter_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); check(numberOfExistingReferences < 1); -} or { - find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target) - */ -private pattern mustInRelationeClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target) - */ -private pattern mayInRelationeClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEGenericType_class(problem,interpretation,source); - find mayInstanceOfEClassifier_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); check(numberOfExistingReferences < 1); -} or { - find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target) - */ -private pattern mustInRelationeBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -/** - * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target) - */ -private pattern mayInRelationeBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypeParameter_class(problem,interpretation,source); - find mayInstanceOfEGenericType_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []iD attribute EAttribute(source,target) - */ -private pattern mustInRelationiD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); -} -/** - * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target) - */ -private pattern mayInRelationiD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAttribute_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []source attribute EAnnotation(source,target) - */ -private pattern mustInRelationsource_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -/** - * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target) - */ -private pattern mayInRelationsource_attribute_EAnnotation( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEAnnotation_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target); -} -/** - * Matcher for detecting tuples t where []abstract attribute EClass(source,target) - */ -private pattern mustInRelationabstract_attribute_EClass( + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>abstract attribute EClass(source,target) - */ -private pattern mayInRelationabstract_attribute_EClass( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []interface attribute EClass(source,target) - */ -private pattern mustInRelationinterface_attribute_EClass( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>interface attribute EClass(source,target) - */ -private pattern mayInRelationinterface_attribute_EClass( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClass_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target) - */ -private pattern mustInRelationinstanceClassName_attribute_EClassifier( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target) - */ -private pattern mayInRelationinstanceClassName_attribute_EClassifier( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target) - */ -private pattern mustInRelationinstanceTypeName_attribute_EClassifier( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target) - */ -private pattern mayInRelationinstanceTypeName_attribute_EClassifier( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEClassifier_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []serializable attribute EDataType(source,target) - */ -private pattern mustInRelationserializable_attribute_EDataType( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target) - */ -private pattern mayInRelationserializable_attribute_EDataType( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEDataType_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationvalue_attribute_EEnumLiteral( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationvalue_attribute_EEnumLiteral( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target) - */ -private pattern mustInRelationliteral_attribute_EEnumLiteral( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target) - */ -private pattern mayInRelationliteral_attribute_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEEnumLiteral_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []name attribute ENamedElement(source,target) - */ -private pattern mustInRelationname_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target) - */ -private pattern mayInRelationname_attribute_ENamedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfENamedElement_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target) - */ -private pattern mustInRelationnsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target) - */ -private pattern mayInRelationnsURI_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target) - */ -private pattern mustInRelationnsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target) - */ -private pattern mayInRelationnsPrefix_attribute_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEPackage_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } -/** - * Matcher for detecting tuples t where []containment attribute EReference(source,target) - */ -private pattern mustInRelationcontainment_attribute_EReference( + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>containment attribute EReference(source,target) - */ -private pattern mayInRelationcontainment_attribute_EReference( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where []container attribute EReference(source,target) - */ -private pattern mustInRelationcontainer_attribute_EReference( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } -/** - * Matcher for detecting tuples t where <>container attribute EReference(source,target) - */ -private pattern mayInRelationcontainer_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + LogicProblem.elements(problem,element); } or { - find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target); + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); } -/** - * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target) - */ -private pattern mustInRelationresolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); } -/** - * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target) - */ -private pattern mayInRelationresolveProxies_attribute_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEReference_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); } or { - find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target); + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); } + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// /** - * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target) + * An element must be an instance of type "FunctionalElement class". */ -private pattern mustInRelationchangeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); } + /** - * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target) + * An element may be an instance of type "FunctionalElement class". */ -private pattern mayInRelationchangeable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target) + * An element must be an instance of type "FunctionalArchitectureModel class". */ -private pattern mustInRelationvolatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); } + /** - * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target) + * An element may be an instance of type "FunctionalArchitectureModel class". */ -private pattern mayInRelationvolatile_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target) + * An element must be an instance of type "Function class". */ -private pattern mustInRelationtransient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); } + /** - * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target) + * An element may be an instance of type "Function class". */ -private pattern mayInRelationtransient_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target) + * An element must be an instance of type "FAMTerminator class". */ -private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); } + /** - * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target) + * An element may be an instance of type "FAMTerminator class". */ -private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target) + * An element must be an instance of type "InformationLink class". */ -private pattern mustInRelationunsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); } + /** - * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target) + * An element may be an instance of type "InformationLink class". */ -private pattern mayInRelationunsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target) + * An element must be an instance of type "FunctionalInterface class". */ -private pattern mustInRelationderived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); } + /** - * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target) + * An element may be an instance of type "FunctionalInterface class". */ -private pattern mayInRelationderived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStructuralFeature_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target) + * An element must be an instance of type "FunctionalInput class". */ -private pattern mustInRelationordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); } + /** - * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target) + * An element may be an instance of type "FunctionalInput class". */ -private pattern mayInRelationordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target) + * An element must be an instance of type "FunctionalOutput class". */ -private pattern mustInRelationunique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); } + /** - * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target) + * An element may be an instance of type "FunctionalOutput class". */ -private pattern mayInRelationunique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target) + * An element must be an instance of type "FunctionalData class". */ -private pattern mustInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); } + /** - * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target) + * An element may be an instance of type "FunctionalData class". */ -private pattern mayInRelationlowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); } or { - find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target); -} + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } /** - * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target) + * An element must be an instance of type "FunctionType enum". */ -private pattern mustInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); } + /** - * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target) + * An element may be an instance of type "FunctionType enum". */ -private pattern mayInRelationupperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - IntegerElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target); -} +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// /** - * Matcher for detecting tuples t where []many attribute ETypedElement(source,target) + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) */ -private pattern mustInRelationmany_attribute_ETypedElement( +private pattern mustInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target) + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) */ -private pattern mayInRelationmany_attribute_ETypedElement( +private pattern mayInRelationinterface_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -62462,33 +46021,42 @@ private pattern mayInRelationmany_attribute_ETypedElement( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target); + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []required attribute ETypedElement(source,target) + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) */ -private pattern mustInRelationrequired_attribute_ETypedElement( +private pattern mustInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target) + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) */ -private pattern mayInRelationrequired_attribute_ETypedElement( +private pattern mayInRelationmodel_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -62497,33 +46065,33 @@ private pattern mayInRelationrequired_attribute_ETypedElement( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfETypedElement_class(problem,interpretation,source); - BooleanElement(target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { - find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target); + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target) + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) */ -private pattern mustInRelationkey_attribute_EStringToStringMapEntry( +private pattern mustInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target) + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) */ -private pattern mayInRelationkey_attribute_EStringToStringMapEntry( +private pattern mayInRelationparent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { @@ -62532,1724 +46100,948 @@ private pattern mayInRelationkey_attribute_EStringToStringMapEntry( find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_); + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); } /** - * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target) + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) */ -private pattern mustInRelationvalue_attribute_EStringToStringMapEntry( +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** - * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target) - */ -private pattern mayInRelationvalue_attribute_EStringToStringMapEntry( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source); - StringElement(target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); -} or { - find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target); -} - -////////// -// 1.3 Relation Definition Indexers -////////// - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or - - { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or - - { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or - - { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or - - { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or - - { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or - - { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or - - { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or - - { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); -} - -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustInstanceOfEAttribute_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustInstanceOfEReference_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} - -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) -{ - find interpretation(problem,interpretation); - find mustInstanceOfEOperation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEGenericType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAttribute_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEDataType_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClassifier_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEAnnotation_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfETypeParameter_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEReference_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEEnum_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfETypedElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEClass_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -} -pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EStringToStringMapEntry_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class"); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnum_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class"); - find mayInstanceOfEEnum_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EParameter_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class"); - find mayInstanceOfEParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement"); - find mustInstanceOfETypedElement_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType"); - find mustInstanceOfEGenericType_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter"); - find mustInstanceOfETypeParameter_class(problem,interpretation,container); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EGenericType_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class"); - find mayInstanceOfEGenericType_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EPackage_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart"); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EObject_class_by_contents_reference_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation"); - find mustInstanceOfEAnnotation_class(problem,interpretation,container); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EObject_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class"); - find mayInstanceOfEObject_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral"); - find mustInstanceOfEEnum_class(problem,interpretation,container); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EEnumLiteral_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class"); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier"); - find mustInstanceOfEClassifier_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation"); - find mustInstanceOfEOperation_class(problem,interpretation,container); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_ETypeParameter_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class"); - find mayInstanceOfETypeParameter_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAttribute_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class"); - find mayInstanceOfEAttribute_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EOperation_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class"); - find mayInstanceOfEOperation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation( + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation"); - find mustInstanceOfEModelElement_class(problem,interpretation,container); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); } -pattern createObject_EAnnotation_class( +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class"); - find mayInstanceOfEAnnotation_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature( +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature"); - find mustInstanceOfEClass_class(problem,interpretation,container); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); } -pattern createObject_EReference_class( +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class"); - find mayInstanceOfEReference_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); } -pattern createObject_EDataType_class( +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class"); - find mayInstanceOfEDataType_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier( +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier"); - find mustInstanceOfEPackage_class(problem,interpretation,container); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); } -pattern createObject_EClass_class( +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class"); - find mayInstanceOfEClass_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} - -////////// -// 4.2 Type refinement -////////// -pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); -} -pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); -} -pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); -} -pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEModelElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); -} -pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); -} -pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); -} -pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); -} -pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfENamedElement_class(problem,interpretation,element); -} -pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEParameter_class(problem,interpretation,element); - neg find mustInstanceOfEReference_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfEClassifier_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); - neg find mustInstanceOfEOperation_class(problem,interpretation,element); - neg find mustInstanceOfEAttribute_class(problem,interpretation,element); -} -pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEEnum_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); -} -pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEAnnotation_class(problem,interpretation,element); - neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); - neg find mustInstanceOfEGenericType_class(problem,interpretation,element); - neg find mustInstanceOfEObject_class(problem,interpretation,element); - neg find mustInstanceOfEDataType_class(problem,interpretation,element); - neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); - neg find mustInstanceOfETypeParameter_class(problem,interpretation,element); - neg find mustInstanceOfETypedElement_class(problem,interpretation,element); - neg find mustInstanceOfEClass_class(problem,interpretation,element); - neg find mustInstanceOfEPackage_class(problem,interpretation,element); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_eAttributeType_reference_EAttribute( +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - find mustInstanceOfEDataType_class(problem,interpretation,to); - find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); - neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); } -pattern refineRelation_references_reference_EAnnotation( +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - find mustInstanceOfEObject_class(problem,interpretation,to); - find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eSuperTypes_reference_EClass( +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); } -pattern refineRelation_eAllAttributes_reference_EClass( +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eAllReferences_reference_EClass( +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); } -pattern refineRelation_eReferences_reference_EClass( +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eAttributes_reference_EClass( +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); } -pattern refineRelation_eAllContainments_reference_EClass( +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eAllOperations_reference_EClass( +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEOperation_class(problem,interpretation,to); - find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); } -pattern refineRelation_eAllStructuralFeatures_reference_EClass( +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,to); - find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eAllSuperTypes_reference_EClass( +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } -pattern refineRelation_eIDAttribute_reference_EClass( +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eAllGenericSuperTypes_reference_EClass( +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - find mustInstanceOfEGenericType_class(problem,interpretation,to); - find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); - neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); } -pattern refineRelation_eExceptions_reference_EOperation( +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEOperation_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); - neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern refineRelation_eOpposite_reference_EReference( +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEReference_class(problem,interpretation,to); - find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); } -pattern refineRelation_eReferenceType_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEClass_class(problem,interpretation,to); - find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -pattern refineRelation_eKeys_reference_EReference( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - find mustInstanceOfEAttribute_class(problem,interpretation,to); - find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to); - neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -pattern refineRelation_eType_reference_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); } -pattern refineRelation_eRawType_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_eTypeParameter_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfETypeParameter_class(problem,interpretation,to); - find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_eClassifier_reference_EGenericType( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEGenericType_class(problem,interpretation,from); - find mustInstanceOfEClassifier_class(problem,interpretation,to); - find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); - neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to); -} -pattern refineRelation_iD_attribute_EAttribute( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAttribute_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to); - neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to); -} -pattern refineRelation_source_attribute_EAnnotation( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEAnnotation_class(problem,interpretation,from); - StringElement(to); - find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); - neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to); -} -pattern refineRelation_abstract_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to); -} -pattern refineRelation_interface_attribute_EClass( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClass_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to); - neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to); -} -pattern refineRelation_instanceClassName_attribute_EClassifier( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); } -pattern refineRelation_instanceTypeName_attribute_EClassifier( +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEClassifier_class(problem,interpretation,from); - StringElement(to); - find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); - neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_serializable_attribute_EDataType( +pattern createObject_FunctionalInterface_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEDataType_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to); - neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_value_attribute_EEnumLiteral( +pattern createObject_FunctionalArchitectureModel_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_literal_attribute_EEnumLiteral( +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEEnumLiteral_class(problem,interpretation,from); - StringElement(to); - find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); - neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_name_attribute_ENamedElement( +pattern createObject_FunctionalInput_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfENamedElement_class(problem,interpretation,from); - StringElement(to); - find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to); - neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_nsURI_attribute_EPackage( +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_nsPrefix_attribute_EPackage( +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEPackage_class(problem,interpretation,from); - StringElement(to); - find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); - neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_containment_attribute_EReference( +pattern createObject_Function_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_container_attribute_EReference( +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_resolveProxies_attribute_EReference( +pattern createObject_FunctionalOutput_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEReference_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); - neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_changeable_attribute_EStructuralFeature( +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_volatile_attribute_EStructuralFeature( +pattern createObject_FAMTerminator_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_transient_attribute_EStructuralFeature( +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature( +pattern createObject_InformationLink_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - StringElement(to); - find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -pattern refineRelation_unsettable_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -pattern refineRelation_derived_attribute_EStructuralFeature( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfEStructuralFeature_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); - neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -pattern refineRelation_ordered_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -pattern refineRelation_unique_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -pattern refineRelation_lowerBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -pattern refineRelation_upperBound_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - IntegerElement(to); - find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -pattern refineRelation_many_attribute_ETypedElement( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); } -pattern refineRelation_required_attribute_ETypedElement( + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfETypedElement_class(problem,interpretation,from); - BooleanElement(to); - find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); - neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); } -pattern refineRelation_key_attribute_EStringToStringMapEntry( +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); } -pattern refineRelation_value_attribute_EStringToStringMapEntry( +pattern refineRelation_type_attribute_Function( problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from); - StringElement(to); - find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); - neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); } diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem index 169eadb3..f221cce7 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem @@ -1,97 +1,82 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + - + - - + + - - + + - - + + - + - + + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -105,24 +90,24 @@ - + - + - + - + - + - + @@ -136,24 +121,24 @@ - + - + - + - + - + @@ -167,24 +152,24 @@ - + - + - + - + - + - + @@ -198,55 +183,42 @@ - + - - - - - - - + - - - - - - - + + + + + + - + - - - - - - - + - + - + - + - + - + - + @@ -260,24 +232,24 @@ - + - + - + - + - + - + @@ -291,24 +263,24 @@ - + - + - + - + - + - + @@ -322,1738 +294,287 @@ - - - - - - - - - - - - - - - - - - - + - + - + - + - - - + + + - - - + + + - - + + - + - - - - + - - + + - - - - - - - - - - + + + + - - - - - + + + - + - - - - + - - + + - - - - - - - - - - + + + + - - - - - + + + - + - - - - + - - + + - - - - - - - - - - + + + + - - - - - + + + - + - - - - + - - + + - - - - - - - - - - + + + + - - - - - + + + - - - - - - - - - - - - - - - - - - - + - - - - + - - + + - - - - - - - - - - + + + + - - - - - + + + - + - - - - + - - + + - - - - - - - - - - + + + + - - - - - + + + - + - - - - - - - + - - - - - - - - - + + + + + + + + - - - - - - - + - + - + - + - + - - - + + + - - - + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + - + + - - - - - - - - - - - + - - - - - - - - - + + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + - + - - - + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + 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 index 985e7346..55020b90 100644 --- 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 @@ -1,5 +1,5 @@ - + @@ -76,398 +76,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - + - + - + - + - + - - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -481,17 +122,4 @@ - - - - - - - - - - - - - diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als index 16ff4006..716e4f33 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als @@ -1,6 +1,6 @@ one sig util'language { - util'root : one type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))), - util'contains : (type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart)))))))))) lone->set (type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart)))))))))) + util'root : one type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))), + util'contains : (type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart)))))))))) lone->set (type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart)))))))))) } abstract sig util'Object { } @@ -12,7 +12,8 @@ sig type'FunctionalArchitectureModel'class in util'Object { rootElements'reference'FunctionalArchitectureModel : set type'FunctionalElement'class } sig type'Function'class in type'FunctionalElement'class { - subElements'reference'Function : set type'FunctionalElement'class + subElements'reference'Function : set type'FunctionalElement'class, + type'attribute'Function : one type'FunctionType'enum } sig type'FAMTerminator'class in util'Object { data'reference'FAMTerminator : lone type'FunctionalData'class @@ -41,17 +42,14 @@ sig type'FunctionalArchitectureModel'class'DefinedPart in type'FunctionalArchite } sig type'FunctionalArchitectureModel'class'UndefinedPart in type'FunctionalArchitectureModel'class { } -one sig element'o'1 in type'FunctionalArchitectureModel'class'DefinedPart { -} one sig element'Root'literal'FunctionType, element'Intermediate'literal'FunctionType, element'Leaf'literal'FunctionType in type'FunctionType'enum { } -pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation [parameter'T: type'FAMTerminator'class, parameter'I: type'InformationLink'class] { - (some variable'Out: type'FunctionalOutput'class { parameter'I in variable'Out.outgoingLinks'reference'FunctionalOutput && parameter'T in variable'Out.terminator'reference'FunctionalData }) || (some variable'In: type'FunctionalInput'class { variable'In in parameter'I.to'reference'InformationLink && (variable'In in type'FunctionalInput'class && parameter'T in variable'In.terminator'reference'FunctionalData) }) +one sig element'o'1 in type'FunctionalArchitectureModel'class'DefinedPart { } -pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [parameter'This: type'Function'class, parameter'Target: type'FunctionType'enum] { - (some variable'Model: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'rootElements [ variable'Model , parameter'This ] && parameter'Target = element'Root'literal'FunctionType }) || ((all variable'Child: type'Function'class, variable'Model: type'FunctionalArchitectureModel'class { parameter'This in type'Function'class && (! (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [ variable'Child , parameter'This ]) && (! (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'rootElements [ variable'Model , parameter'This ]) && parameter'Target = element'Leaf'literal'FunctionType)) }) || (some variable'Par: type'Function'class, variable'Child: type'Function'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [ parameter'This , variable'Par ] && (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [ variable'Child , parameter'This ] && parameter'Target = element'Intermediate'literal'FunctionType) })) +pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation [parameter'T: type'FAMTerminator'class, parameter'I: type'InformationLink'class] { + (some variable'Out: type'FunctionalOutput'class { parameter'I in variable'Out.outgoingLinks'reference'FunctionalOutput && parameter'T in variable'Out.terminator'reference'FunctionalData }) or (some variable'In: type'FunctionalInput'class { variable'In in parameter'I.to'reference'InformationLink && (variable'In in type'FunctionalInput'class && parameter'T in variable'In.terminator'reference'FunctionalData) }) } pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'rootElements [parameter'Model: type'FunctionalArchitectureModel'class, parameter'Root: type'Function'class] { parameter'Root in type'Function'class && parameter'Root in parameter'Model.rootElements'reference'FunctionalArchitectureModel @@ -159,19 +157,19 @@ fact util'containmentDefinition { util'language.util'contains = interface'reference'FunctionalElement + (rootElements'reference'FunctionalArchitectureModel + (subElements'reference'Function + (data'reference'FunctionalInterface + (outgoingLinks'reference'FunctionalOutput + terminator'reference'FunctionalData)))) } fact util'noParentForRoot { - no parent: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { parent->(util'language.util'root) in util'language.util'contains } + no parent: type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { parent->(util'language.util'root) in util'language.util'contains } } fact util'atLeastOneParent { - all child: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { child = util'language.util'root || (some parent: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { parent->child in util'language.util'contains }) } + all child: type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { child = util'language.util'root or (some parent: type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { parent->child in util'language.util'contains }) } } fact util'noCircularContainment { - no circle: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { circle->circle in ^ (util'language.util'contains) } + no circle: type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { circle->circle in ^ (util'language.util'contains) } } fact lowerMultiplicity'model'FunctionalElement { all src: type'FunctionalElement'class { some trg'1: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'1 ] } } } fact upperMultiplicity'model'FunctionalElement { - all src: type'FunctionalElement'class, trg'1: type'FunctionalArchitectureModel'class, trg'2: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'1 ] && pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'2 ] => ! (trg'1 != trg'2) } + all src: type'FunctionalElement'class, trg'1: type'FunctionalArchitectureModel'class, trg'2: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'1 ] && pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'2 ] implies ! (trg'1 != trg'2) } } fact oppositeReference'interface'FunctionalElement { interface'reference'FunctionalElement = ~ element'reference'FunctionalInterface @@ -191,13 +189,7 @@ fact oppositeReference'to'InformationLink { fact oppositeReference'data'FunctionalInterface { data'reference'FunctionalInterface = ~ interface'reference'FunctionalData } -fact lowerMultiplicity'type'Function { - all src: type'Function'class { some trg'1: type'FunctionType'enum { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [ src , trg'1 ] } } -} -fact upperMultiplicity'type'Function { - all src: type'Function'class, trg'1: type'FunctionType'enum, trg'2: type'FunctionType'enum { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [ src , trg'1 ] && pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [ src , trg'2 ] => ! (trg'1 != trg'2) } -} fact errorpattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation { all p0: type'FAMTerminator'class, p1: type'InformationLink'class { ! (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation [ p0 , p1 ]) } } -run { } for exactly 5 util'Object , 31 Int , exactly 0 String \ No newline at end of file +run { } for exactly 10 util'Object , 31 Int , exactly 0 String \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt index 8c87a095..7029fce0 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt @@ -1 +1 @@ -Model generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedModel generation startedModel generation startedModel generation startedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedModel generation startedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finished \ No newline at end of file +Model generation startedModel generation startedModel generation startedModel generation startedProblem is consistent, 5 models are generated!Model generation startedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedModel generation startedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated! \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml index 9eac10b7..3e4dddc2 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml @@ -113,8 +113,8 @@ graph id 3 graphics [ - w 361.90000000000003 - h 54 + w 41.800000000000004 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -122,7 +122,7 @@ graph ] LabelGraphics [ - text "o 1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -134,8 +134,6 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -150,7 +148,7 @@ graph id 4 graphics [ - w 41.800000000000004 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -159,7 +157,7 @@ graph ] LabelGraphics [ - text "true" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -185,8 +183,8 @@ graph id 5 graphics [ - w 50.6 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -194,7 +192,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -206,6 +204,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -220,7 +219,7 @@ graph id 6 graphics [ - w 192.50000000000003 + w 184.8 h 54 type "rectangle" fill "#FFFFFF" @@ -241,8 +240,8 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -257,8 +256,8 @@ graph id 7 graphics [ - w 112.2 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -266,7 +265,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -278,6 +277,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -292,8 +293,8 @@ graph id 8 graphics [ - w 85.80000000000001 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -301,7 +302,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -313,6 +314,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -327,8 +330,8 @@ graph id 9 graphics [ - w 103.4 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -336,7 +339,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -348,6 +351,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -362,64 +366,7 @@ graph id 10 graphics [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 + w 161.70000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -428,7 +375,7 @@ graph ] LabelGraphics [ - text "Root literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -440,7 +387,7 @@ graph LabelGraphics [ text " - FunctionType enum + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -452,11 +399,11 @@ graph node [ - id 1 + id 11 graphics [ - w 297.0 - h 40 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -464,7 +411,7 @@ graph ] LabelGraphics [ - text "Intermediate literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -476,7 +423,8 @@ graph LabelGraphics [ text " - FunctionType enum + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -488,11 +436,11 @@ graph node [ - id 2 + id 12 graphics [ - w 226.60000000000002 - h 40 + w 112.2 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -500,7 +448,7 @@ graph ] LabelGraphics [ - text "Leaf literal FunctionType" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -512,7 +460,6 @@ graph LabelGraphics [ text " - FunctionType enum " fontSize 14 fontName "Consolas" @@ -524,11 +471,11 @@ graph node [ - id 3 + id 13 graphics [ - w 361.90000000000003 - h 54 + w 85.80000000000001 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -536,7 +483,7 @@ graph ] LabelGraphics [ - text "o 1" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -548,8 +495,6 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -561,10 +506,10 @@ graph node [ - id 4 + id 14 graphics [ - w 41.800000000000004 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -573,7 +518,7 @@ graph ] LabelGraphics [ - text "true" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -596,10 +541,10 @@ graph node [ - id 5 + id 15 graphics [ - w 50.6 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -608,7 +553,7 @@ graph ] LabelGraphics [ - text "false" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -628,186 +573,66 @@ graph borderDistance 6 ] ] - - node + edge + [ + source 10 + target 8 + graphics [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 9 + target 7 + graphics [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 9 + target 11 + graphics [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] + ] edge [ - source 3 + source 5 target 6 graphics [ @@ -817,7 +642,202 @@ graph ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -941,8 +961,8 @@ graph id 3 graphics [ - w 361.90000000000003 - h 54 + w 41.800000000000004 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -950,7 +970,7 @@ graph ] LabelGraphics [ - text "o 1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -962,8 +982,6 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -978,7 +996,7 @@ graph id 4 graphics [ - w 41.800000000000004 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -987,7 +1005,7 @@ graph ] LabelGraphics [ - text "true" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1013,8 +1031,8 @@ graph id 5 graphics [ - w 50.6 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1022,7 +1040,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1034,6 +1052,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -1048,7 +1067,7 @@ graph id 6 graphics [ - w 192.50000000000003 + w 184.8 h 54 type "rectangle" fill "#FFFFFF" @@ -1069,8 +1088,8 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1085,8 +1104,8 @@ graph id 7 graphics [ - w 112.2 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1094,7 +1113,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1106,6 +1125,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -1120,8 +1140,8 @@ graph id 8 graphics [ - w 85.80000000000001 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1129,7 +1149,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1141,6 +1161,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -1155,8 +1176,8 @@ graph id 9 graphics [ - w 103.4 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1164,7 +1185,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1176,6 +1197,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1190,65 +1213,8 @@ graph id 10 graphics [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1256,7 +1222,7 @@ graph ] LabelGraphics [ - text "Root literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1268,7 +1234,8 @@ graph LabelGraphics [ text " - FunctionType enum + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1280,10 +1247,10 @@ graph node [ - id 1 + id 11 graphics [ - w 297.0 + w 161.70000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -1292,7 +1259,7 @@ graph ] LabelGraphics [ - text "Intermediate literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1304,7 +1271,7 @@ graph LabelGraphics [ text " - FunctionType enum + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -1316,11 +1283,11 @@ graph node [ - id 2 + id 12 graphics [ - w 226.60000000000002 - h 40 + w 112.2 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1328,7 +1295,7 @@ graph ] LabelGraphics [ - text "Leaf literal FunctionType" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1340,7 +1307,6 @@ graph LabelGraphics [ text " - FunctionType enum " fontSize 14 fontName "Consolas" @@ -1352,11 +1318,11 @@ graph node [ - id 3 + id 13 graphics [ - w 361.90000000000003 - h 54 + w 85.80000000000001 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1364,7 +1330,7 @@ graph ] LabelGraphics [ - text "o 1" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1376,8 +1342,6 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -1389,10 +1353,10 @@ graph node [ - id 4 + id 14 graphics [ - w 41.800000000000004 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -1401,7 +1365,7 @@ graph ] LabelGraphics [ - text "true" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1424,10 +1388,10 @@ graph node [ - id 5 + id 15 graphics [ - w 50.6 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -1436,7 +1400,7 @@ graph ] LabelGraphics [ - text "false" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1456,196 +1420,75 @@ graph borderDistance 6 ] ] - - node + edge + [ + source 11 + target 9 + graphics [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 7 + target 6 + graphics [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 8 + target 6 + graphics [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] + ] edge [ - source 3 - target 6 + source 7 + target 9 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1653,412 +1496,58 @@ graph position "thead" ] ] -] -graph -[ - node + edge + [ + source 8 + target 9 + graphics [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 5 + target 6 + graphics [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + width 3 + targetArrow "standard" ] - - node + LabelGraphics [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics + ] + edge + [ + source 5 + target 9 + graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "model reference FunctionalElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2068,8 +1557,8 @@ graph ] edge [ - source 3 - target 6 + source 5 + target 10 graphics [ fill "#000000" @@ -2078,7 +1567,7 @@ graph ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2088,8 +1577,8 @@ graph ] edge [ - source 6 - target 0 + source 9 + target 7 graphics [ fill "#000000" @@ -2097,7 +1586,7 @@ graph ] LabelGraphics [ - text "type attribute Function" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2105,4366 +1594,58 @@ graph position "thead" ] ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 1 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 2 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 1 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 2 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node + edge + [ + source 9 + target 8 + graphics [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 6 + target 7 + graphics [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + width 3 + targetArrow "standard" ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] + ] edge [ source 6 - target 3 + target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "model reference FunctionalElement" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6474,8 +1655,8 @@ graph ] edge [ - source 3 - target 6 + source 9 + target 11 graphics [ fill "#000000" @@ -6484,7 +1665,7 @@ graph ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6495,7 +1676,7 @@ graph edge [ source 6 - target 1 + target 5 graphics [ fill "#000000" @@ -6503,7 +1684,7 @@ graph ] LabelGraphics [ - text "type attribute Function" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6511,267 +1692,54 @@ graph position "thead" ] ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 254.10000000000002 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 15.400000000000002 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "0" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node + edge + [ + source 9 + target 5 + graphics [ - id 5 - graphics - [ - w 15.400000000000002 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 6 - graphics - [ - w 33.0 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text ""A"" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 7 + id 0 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6779,7 +1747,7 @@ graph ] LabelGraphics [ - text ""B"" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6791,6 +1759,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -6802,11 +1771,11 @@ graph node [ - id 8 + id 1 graphics [ - w 94.60000000000001 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6814,7 +1783,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6826,6 +1795,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -6837,11 +1807,11 @@ graph node [ - id 9 + id 2 graphics [ - w 68.2 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6849,7 +1819,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6861,6 +1831,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -6872,10 +1843,10 @@ graph node [ - id 10 + id 3 graphics [ - w 121.00000000000001 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -6884,7 +1855,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6907,11 +1878,11 @@ graph node [ - id 11 + id 4 graphics [ - w 269.5 - h 124 + w 50.6 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6919,7 +1890,7 @@ graph ] LabelGraphics [ - text "null" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6931,13 +1902,6 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -6949,11 +1913,11 @@ graph node [ - id 12 + id 5 graphics [ - w 269.5 - h 124 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6973,13 +1937,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -6991,11 +1949,11 @@ graph node [ - id 13 + id 6 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7015,12 +1973,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -7032,11 +1986,11 @@ graph node [ - id 14 + id 7 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7056,13 +2010,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -7074,11 +2023,11 @@ graph node [ - id 15 + id 8 graphics [ - w 269.5 - h 124 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7098,13 +2047,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -7116,11 +2060,11 @@ graph node [ - id 16 + id 9 graphics [ - w 112.2 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7128,7 +2072,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7140,6 +2084,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -7151,11 +2096,11 @@ graph node [ - id 17 + id 10 graphics [ - w 85.80000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7163,7 +2108,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7175,6 +2120,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -7186,11 +2133,11 @@ graph node [ - id 18 + id 11 graphics [ - w 103.4 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7198,7 +2145,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7210,6 +2157,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -7221,10 +2170,10 @@ graph node [ - id 19 + id 12 graphics [ - w 103.4 + w 112.2 h 26 type "rectangle" fill "#FFFFFF" @@ -7233,7 +2182,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7253,224 +2202,115 @@ graph borderDistance 6 ] ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 14 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 15 - target 13 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 11 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 12 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 14 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 15 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 13 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eSubpackages reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics + + node [ - text "eSuperPackage reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] - edge - [ - source 12 - target 8 - graphics + + node [ - fill "#000000" - targetArrow "standard" + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "instanceClassName attribute EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] edge [ - source 11 - target 6 + source 9 + target 7 graphics [ fill "#000000" @@ -7478,7 +2318,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7488,16 +2328,17 @@ graph ] edge [ - source 11 - target 10 + source 5 + target 6 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7507,16 +2348,17 @@ graph ] edge [ - source 12 - target 8 + source 5 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7526,16 +2368,17 @@ graph ] edge [ - source 0 - target 10 + source 5 + target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7545,16 +2388,17 @@ graph ] edge [ - source 12 + source 5 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7564,16 +2408,17 @@ graph ] edge [ - source 11 - target 10 + source 5 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7583,16 +2428,17 @@ graph ] edge [ - source 13 - target 6 + source 7 + target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7602,8 +2448,8 @@ graph ] edge [ - source 0 - target 9 + source 6 + target 5 graphics [ fill "#000000" @@ -7611,7 +2457,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7621,8 +2467,8 @@ graph ] edge [ - source 0 - target 8 + source 7 + target 5 graphics [ fill "#000000" @@ -7630,239 +2476,81 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 8 + target 5 + graphics [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 10 + target 5 + graphics [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 6 + id 0 graphics [ - w 192.50000000000003 - h 54 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7870,7 +2558,7 @@ graph ] LabelGraphics [ - text "null" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7882,8 +2570,7 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -7895,11 +2582,11 @@ graph node [ - id 7 + id 1 graphics [ - w 112.2 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7907,7 +2594,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7919,6 +2606,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -7930,11 +2618,11 @@ graph node [ - id 8 + id 2 graphics [ - w 85.80000000000001 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7942,7 +2630,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7954,6 +2642,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -7965,10 +2654,10 @@ graph node [ - id 9 + id 3 graphics [ - w 103.4 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -7977,7 +2666,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8000,10 +2689,10 @@ graph node [ - id 10 + id 4 graphics [ - w 103.4 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -8012,93 +2701,33 @@ graph ] LabelGraphics [ - text "New Objects" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 fontName "Monospace" autoSizePolicy "node_width" anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] -] -graph -[ + node [ - id 0 + id 5 graphics [ - w 226.60000000000002 + w 207.9 h 40 type "rectangle" fill "#FFFFFF" @@ -8107,7 +2736,7 @@ graph ] LabelGraphics [ - text "Root literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8119,7 +2748,7 @@ graph LabelGraphics [ text " - FunctionType enum + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -8131,11 +2760,11 @@ graph node [ - id 1 + id 6 graphics [ - w 297.0 - h 40 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8143,7 +2772,7 @@ graph ] LabelGraphics [ - text "Intermediate literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8155,7 +2784,8 @@ graph LabelGraphics [ text " - FunctionType enum + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -8167,11 +2797,11 @@ graph node [ - id 2 + id 7 graphics [ - w 226.60000000000002 - h 40 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8179,7 +2809,7 @@ graph ] LabelGraphics [ - text "Leaf literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8191,7 +2821,8 @@ graph LabelGraphics [ text " - FunctionType enum + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -8203,10 +2834,10 @@ graph node [ - id 3 + id 8 graphics [ - w 361.90000000000003 + w 184.8 h 54 type "rectangle" fill "#FFFFFF" @@ -8215,7 +2846,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8227,8 +2858,8 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -8240,11 +2871,11 @@ graph node [ - id 4 + id 9 graphics [ - w 41.800000000000004 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8252,7 +2883,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8264,6 +2895,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -8275,11 +2907,11 @@ graph node [ - id 5 + id 10 graphics [ - w 50.6 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8287,7 +2919,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8299,6 +2931,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -8310,11 +2943,11 @@ graph node [ - id 6 + id 11 graphics [ - w 192.50000000000003 - h 54 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8334,8 +2967,7 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -8347,7 +2979,7 @@ graph node [ - id 7 + id 12 graphics [ w 112.2 @@ -8382,7 +3014,7 @@ graph node [ - id 8 + id 13 graphics [ w 85.80000000000001 @@ -8417,7 +3049,7 @@ graph node [ - id 9 + id 14 graphics [ w 103.4 @@ -8449,45 +3081,222 @@ graph borderDistance 6 ] ] - - node + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] + ] edge [ source 6 - target 3 + target 5 graphics [ fill "#000000" @@ -8495,7 +3304,7 @@ graph ] LabelGraphics [ - text "model reference FunctionalElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8505,17 +3314,16 @@ graph ] edge [ - source 3 - target 6 + source 7 + target 5 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8525,8 +3333,8 @@ graph ] edge [ - source 6 - target 2 + source 8 + target 5 graphics [ fill "#000000" @@ -8534,7 +3342,7 @@ graph ] LabelGraphics [ - text "type attribute Function" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8550,8 +3358,8 @@ graph id 0 graphics [ - w 254.10000000000002 - h 110 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8559,7 +3367,7 @@ graph ] LabelGraphics [ - text "o 1" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8571,12 +3379,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -8591,8 +3394,8 @@ graph id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8600,7 +3403,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8612,6 +3415,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -8626,8 +3430,8 @@ graph id 2 graphics [ - w 50.6 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8635,7 +3439,7 @@ graph ] LabelGraphics [ - text "false" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8647,6 +3451,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -8661,7 +3466,7 @@ graph id 3 graphics [ - w 24.200000000000003 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -8670,7 +3475,7 @@ graph ] LabelGraphics [ - text "-1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8696,7 +3501,7 @@ graph id 4 graphics [ - w 15.400000000000002 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -8705,7 +3510,7 @@ graph ] LabelGraphics [ - text "0" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8731,8 +3536,8 @@ graph id 5 graphics [ - w 15.400000000000002 - h 26 + w 269.5 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8740,7 +3545,7 @@ graph ] LabelGraphics [ - text "1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8752,6 +3557,7 @@ graph LabelGraphics [ text " + FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -8766,8 +3572,8 @@ graph id 6 graphics [ - w 33.0 - h 26 + w 192.50000000000003 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8775,7 +3581,7 @@ graph ] LabelGraphics [ - text ""A"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8787,6 +3593,8 @@ graph LabelGraphics [ text " + FunctionalElement class + Function class " fontSize 14 fontName "Consolas" @@ -8801,8 +3609,8 @@ graph id 7 graphics [ - w 33.0 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8810,7 +3618,7 @@ graph ] LabelGraphics [ - text ""B"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8822,6 +3630,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -8836,8 +3645,8 @@ graph id 8 graphics [ - w 94.60000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8845,7 +3654,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8857,6 +3666,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -8871,8 +3682,8 @@ graph id 9 graphics [ - w 68.2 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8880,7 +3691,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8892,6 +3703,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -8906,8 +3718,8 @@ graph id 10 graphics [ - w 121.00000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8915,7 +3727,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8927,6 +3739,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -8941,8 +3755,8 @@ graph id 11 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8962,12 +3776,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -8981,164 +3791,6 @@ graph [ id 12 graphics - [ - w 269.5 - h 68 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 13 - graphics - [ - w 269.5 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 14 - graphics - [ - w 269.5 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 15 - graphics - [ - w 269.5 - h 68 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 16 - graphics [ w 112.2 h 26 @@ -9172,7 +3824,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -9207,7 +3859,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -9242,7 +3894,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -9266,45 +3918,27 @@ graph LabelGraphics [ text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] edge [ - source 15 - target 0 + source 6 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "eModelElement reference EAnnotation" + text "interface reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9314,8 +3948,8 @@ graph ] edge [ - source 11 - target 0 + source 6 + target 5 graphics [ fill "#000000" @@ -9323,7 +3957,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "model reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9333,16 +3967,17 @@ graph ] edge [ - source 13 - target 0 + source 5 + target 6 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "ePackage reference EClassifier" + text "rootElements reference FunctionalArchitectureModel" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9352,8 +3987,8 @@ graph ] edge [ - source 14 - target 0 + source 9 + target 8 graphics [ fill "#000000" @@ -9361,7 +3996,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9371,8 +4006,8 @@ graph ] edge [ - source 0 - target 12 + source 7 + target 8 graphics [ fill "#000000" @@ -9381,7 +4016,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9391,8 +4026,8 @@ graph ] edge [ - source 0 - target 15 + source 7 + target 10 graphics [ fill "#000000" @@ -9401,7 +4036,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9411,7 +4046,7 @@ graph ] edge [ - source 0 + source 7 target 11 graphics [ @@ -9421,7 +4056,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9431,17 +4066,16 @@ graph ] edge [ - source 0 - target 13 + source 7 + target 6 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "element reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9451,8 +4085,8 @@ graph ] edge [ - source 0 - target 14 + source 8 + target 9 graphics [ fill "#000000" @@ -9461,7 +4095,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9471,7 +4105,7 @@ graph ] edge [ - source 12 + source 8 target 7 graphics [ @@ -9480,45 +4114,7 @@ graph ] LabelGraphics [ - text "source attribute EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "instanceClassName attribute EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "instanceTypeName attribute EClassifier" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9528,8 +4124,8 @@ graph ] edge [ - source 0 - target 10 + source 10 + target 7 graphics [ fill "#000000" @@ -9537,7 +4133,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9548,45 +4144,7 @@ graph edge [ source 11 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 9 + target 7 graphics [ fill "#000000" @@ -9594,7 +4152,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9604,8 +4162,8 @@ graph ] edge [ - source 0 - target 8 + source 6 + target 2 graphics [ fill "#000000" @@ -9613,7 +4171,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "type attribute Function" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9629,8 +4187,8 @@ graph id 0 graphics [ - w 254.10000000000002 - h 110 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9638,7 +4196,7 @@ graph ] LabelGraphics [ - text "o 1" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9650,12 +4208,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -9670,8 +4223,8 @@ graph id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9679,7 +4232,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9691,6 +4244,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -9705,148 +4259,8 @@ graph id 2 graphics [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 15.400000000000002 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "0" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 15.400000000000002 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9854,7 +4268,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9866,6 +4280,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -9877,10 +4292,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -9889,7 +4304,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9912,10 +4327,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -9924,7 +4339,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9947,11 +4362,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 269.5 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9959,7 +4374,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9971,6 +4386,7 @@ graph LabelGraphics [ text " + FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -9982,11 +4398,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 192.50000000000003 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9994,7 +4410,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10006,6 +4422,8 @@ graph LabelGraphics [ text " + FunctionalElement class + Function class " fontSize 14 fontName "Consolas" @@ -10017,11 +4435,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 124 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10041,13 +4459,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -10059,11 +4471,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10083,13 +4495,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -10101,11 +4508,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 96 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10125,11 +4532,7 @@ graph LabelGraphics [ text " - EEnumLiteral class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -10141,11 +4544,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 68 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10165,9 +4568,8 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -10179,11 +4581,11 @@ graph node [ - id 15 + id 11 graphics [ - w 269.5 - h 96 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10203,11 +4605,7 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - ETypeParameter class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + InformationLink class " fontSize 14 fontName "Consolas" @@ -10219,7 +4617,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -10254,7 +4652,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -10289,7 +4687,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -10324,7 +4722,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -10358,124 +4756,8 @@ graph ] edge [ - source 14 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 15 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eTypeParameters reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 13 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eLiterals reference EEnum" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 11 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eEnum reference EEnumLiteral" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 14 + source 6 + target 7 graphics [ fill "#000000" @@ -10484,7 +4766,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "interface reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10494,17 +4776,16 @@ graph ] edge [ - source 0 - target 11 + source 6 + target 5 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "model reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10514,8 +4795,8 @@ graph ] edge [ - source 0 - target 12 + source 5 + target 6 graphics [ fill "#000000" @@ -10524,7 +4805,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "rootElements reference FunctionalArchitectureModel" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10534,7 +4815,7 @@ graph ] edge [ - source 11 + source 9 target 8 graphics [ @@ -10543,7 +4824,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10554,7 +4835,7 @@ graph edge [ source 11 - target 9 + target 10 graphics [ fill "#000000" @@ -10562,7 +4843,7 @@ graph ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10572,8 +4853,8 @@ graph ] edge [ - source 12 - target 9 + source 11 + target 8 graphics [ fill "#000000" @@ -10581,7 +4862,7 @@ graph ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10591,16 +4872,17 @@ graph ] edge [ - source 11 - target 2 + source 7 + target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "serializable attribute EDataType" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10610,16 +4892,17 @@ graph ] edge [ - source 12 - target 2 + source 7 + target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "serializable attribute EDataType" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10629,8 +4912,8 @@ graph ] edge [ - source 13 - target 9 + source 7 + target 6 graphics [ fill "#000000" @@ -10638,7 +4921,7 @@ graph ] LabelGraphics [ - text "literal attribute EEnumLiteral" + text "element reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10648,8 +4931,8 @@ graph ] edge [ - source 0 - target 10 + source 8 + target 11 graphics [ fill "#000000" @@ -10657,7 +4940,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10667,16 +4950,17 @@ graph ] edge [ - source 12 - target 10 + source 10 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10686,16 +4970,17 @@ graph ] edge [ - source 0 + source 8 target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "nsURI attribute EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10705,8 +4990,8 @@ graph ] edge [ - source 0 - target 8 + source 8 + target 7 graphics [ fill "#000000" @@ -10714,170 +4999,62 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 254.10000000000002 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 10 + target 7 + graphics [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 4 + id 0 graphics [ - w 15.400000000000002 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10885,7 +5062,7 @@ graph ] LabelGraphics [ - text "0" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10897,6 +5074,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -10908,11 +5086,11 @@ graph node [ - id 5 + id 1 graphics [ - w 15.400000000000002 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10920,7 +5098,7 @@ graph ] LabelGraphics [ - text "1" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10932,6 +5110,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -10943,11 +5122,11 @@ graph node [ - id 6 + id 2 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10955,7 +5134,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10967,6 +5146,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -10978,10 +5158,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -10990,7 +5170,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -11013,10 +5193,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -11025,7 +5205,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -11048,11 +5228,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 269.5 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11060,7 +5240,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -11072,6 +5252,7 @@ graph LabelGraphics [ text " + FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -11083,11 +5264,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 192.50000000000003 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11095,7 +5276,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -11107,6 +5288,8 @@ graph LabelGraphics [ text " + FunctionalElement class + Function class " fontSize 14 fontName "Consolas" @@ -11118,11 +5301,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 110 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11142,12 +5325,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -11159,11 +5337,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11183,12 +5361,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -11200,11 +5374,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 124 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11224,13 +5398,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -11242,11 +5411,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 96 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11266,11 +5435,7 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - ETypeParameter class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -11282,11 +5447,11 @@ graph node [ - id 15 + id 11 graphics [ - w 269.5 - h 68 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11306,9 +5471,7 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -11320,7 +5483,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -11355,7 +5518,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -11390,7 +5553,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -11425,7 +5588,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -11442,102 +5605,25 @@ graph fill "#FFFFFF" fontSize 16 fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 15 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 14 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eTypeParameters reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] edge [ - source 0 - target 15 + source 6 + target 7 graphics [ fill "#000000" @@ -11546,7 +5632,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "interface reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11556,17 +5642,16 @@ graph ] edge [ - source 0 - target 11 + source 6 + target 5 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "model reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11576,8 +5661,8 @@ graph ] edge [ - source 0 - target 13 + source 5 + target 6 graphics [ fill "#000000" @@ -11586,7 +5671,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "rootElements reference FunctionalArchitectureModel" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11596,17 +5681,16 @@ graph ] edge [ - source 0 - target 12 + source 10 + target 9 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eSubpackages reference EPackage" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11616,8 +5700,8 @@ graph ] edge [ - source 12 - target 0 + source 11 + target 8 graphics [ fill "#000000" @@ -11625,7 +5709,7 @@ graph ] LabelGraphics [ - text "eSuperPackage reference EPackage" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11635,16 +5719,17 @@ graph ] edge [ - source 11 - target 6 + source 7 + target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11654,16 +5739,17 @@ graph ] edge [ - source 11 - target 1 + source 7 + target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "serializable attribute EDataType" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11673,8 +5759,8 @@ graph ] edge [ - source 0 - target 10 + source 7 + target 6 graphics [ fill "#000000" @@ -11682,7 +5768,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "element reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11692,16 +5778,17 @@ graph ] edge [ - source 12 - target 6 + source 9 + target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11711,16 +5798,17 @@ graph ] edge [ - source 0 - target 9 + source 8 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "nsURI attribute EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11730,8 +5818,8 @@ graph ] edge [ - source 12 - target 10 + source 8 + target 7 graphics [ fill "#000000" @@ -11739,7 +5827,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11749,8 +5837,8 @@ graph ] edge [ - source 0 - target 8 + source 9 + target 7 graphics [ fill "#000000" @@ -11758,7 +5846,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11768,8 +5856,8 @@ graph ] edge [ - source 12 - target 8 + source 6 + target 0 graphics [ fill "#000000" @@ -11777,7 +5865,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "type attribute Function" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11793,8 +5881,8 @@ graph id 0 graphics [ - w 254.10000000000002 - h 110 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11802,7 +5890,7 @@ graph ] LabelGraphics [ - text "o 1" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -11814,12 +5902,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -11834,8 +5917,8 @@ graph id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11843,7 +5926,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -11855,6 +5938,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -11869,8 +5953,8 @@ graph id 2 graphics [ - w 50.6 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11878,7 +5962,7 @@ graph ] LabelGraphics [ - text "false" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -11890,6 +5974,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -11904,7 +5989,7 @@ graph id 3 graphics [ - w 24.200000000000003 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -11913,7 +5998,7 @@ graph ] LabelGraphics [ - text "-1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -11939,7 +6024,7 @@ graph id 4 graphics [ - w 15.400000000000002 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -11948,7 +6033,7 @@ graph ] LabelGraphics [ - text "0" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -11974,8 +6059,8 @@ graph id 5 graphics [ - w 15.400000000000002 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11983,7 +6068,7 @@ graph ] LabelGraphics [ - text "1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -11995,6 +6080,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -12009,8 +6095,8 @@ graph id 6 graphics [ - w 33.0 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -12018,7 +6104,7 @@ graph ] LabelGraphics [ - text ""A"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -12030,6 +6116,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -12044,8 +6132,8 @@ graph id 7 graphics [ - w 33.0 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -12053,7 +6141,7 @@ graph ] LabelGraphics [ - text ""B"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -12065,6 +6153,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -12079,8 +6169,8 @@ graph id 8 graphics [ - w 94.60000000000001 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -12088,7 +6178,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -12100,6 +6190,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -12114,8 +6205,8 @@ graph id 9 graphics [ - w 68.2 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -12123,7 +6214,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -12135,6 +6226,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -12149,8 +6242,8 @@ graph id 10 graphics [ - w 121.00000000000001 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -12158,7 +6251,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -12170,6 +6263,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -12184,8 +6278,8 @@ graph id 11 graphics [ - w 269.5 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -12205,12 +6299,7 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -12224,169 +6313,6 @@ graph [ id 12 graphics - [ - w 269.5 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 13 - graphics - [ - w 269.5 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 14 - graphics - [ - w 269.5 - h 96 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class - ENamedElement class - ETypeParameter class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 15 - graphics - [ - w 269.5 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 16 - graphics [ w 112.2 h 26 @@ -12420,7 +6346,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -12455,7 +6381,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -12490,7 +6416,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -12513,38 +6439,19 @@ graph ] LabelGraphics [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] edge [ - source 15 - target 13 + source 8 + target 7 graphics [ fill "#000000" @@ -12552,7 +6459,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12562,17 +6469,16 @@ graph ] edge [ - source 11 - target 14 + source 10 + target 6 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eTypeParameters reference EClassifier" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12582,17 +6488,16 @@ graph ] edge [ - source 0 - target 11 + source 11 + target 9 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12602,8 +6507,8 @@ graph ] edge [ - source 13 - target 15 + source 5 + target 6 graphics [ fill "#000000" @@ -12612,7 +6517,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12622,8 +6527,8 @@ graph ] edge [ - source 0 - target 12 + source 5 + target 7 graphics [ fill "#000000" @@ -12632,7 +6537,7 @@ graph ] LabelGraphics [ - text "eSubpackages reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12642,8 +6547,8 @@ graph ] edge [ - source 12 - target 13 + source 5 + target 9 graphics [ fill "#000000" @@ -12652,83 +6557,7 @@ graph ] LabelGraphics [ - text "eSubpackages reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eSuperPackage reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 12 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eSuperPackage reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 1 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "abstract attribute EClass" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 2 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "interface attribute EClass" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12738,16 +6567,17 @@ graph ] edge [ - source 11 + source 7 target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12757,35 +6587,17 @@ graph ] edge [ - source 0 + source 6 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12795,16 +6607,17 @@ graph ] edge [ - source 0 - target 9 + source 9 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "nsURI attribute EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12814,8 +6627,8 @@ graph ] edge [ - source 13 - target 7 + source 6 + target 5 graphics [ fill "#000000" @@ -12823,7 +6636,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12833,8 +6646,8 @@ graph ] edge [ - source 12 - target 7 + source 7 + target 5 graphics [ fill "#000000" @@ -12842,7 +6655,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12852,8 +6665,8 @@ graph ] edge [ - source 0 - target 8 + source 9 + target 5 graphics [ fill "#000000" @@ -12861,7 +6674,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -12985,8 +6798,8 @@ graph id 3 graphics [ - w 361.90000000000003 - h 54 + w 41.800000000000004 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -12994,7 +6807,7 @@ graph ] LabelGraphics [ - text "o 1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13006,8 +6819,6 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -13022,7 +6833,7 @@ graph id 4 graphics [ - w 41.800000000000004 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -13031,7 +6842,7 @@ graph ] LabelGraphics [ - text "true" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13057,8 +6868,8 @@ graph id 5 graphics [ - w 50.6 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13066,7 +6877,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13078,6 +6889,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -13092,7 +6904,7 @@ graph id 6 graphics [ - w 192.50000000000003 + w 184.8 h 54 type "rectangle" fill "#FFFFFF" @@ -13113,8 +6925,8 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -13129,8 +6941,8 @@ graph id 7 graphics [ - w 112.2 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13138,7 +6950,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13150,6 +6962,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -13164,8 +6978,8 @@ graph id 8 graphics [ - w 85.80000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13173,7 +6987,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13185,6 +6999,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -13199,8 +7015,8 @@ graph id 9 graphics [ - w 103.4 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13208,7 +7024,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13220,6 +7036,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -13234,8 +7052,8 @@ graph id 10 graphics [ - w 103.4 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13243,7 +7061,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13255,6 +7073,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -13263,74 +7082,86 @@ graph borderDistance 6 ] ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 0 - graphics + + node [ - fill "#000000" - targetArrow "standard" + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] -] -graph -[ + node [ - id 0 + id 13 graphics [ - w 254.10000000000002 - h 110 + w 85.80000000000001 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13338,7 +7169,7 @@ graph ] LabelGraphics [ - text "o 1" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13350,12 +7181,6 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class " fontSize 14 fontName "Consolas" @@ -13367,10 +7192,10 @@ graph node [ - id 1 + id 14 graphics [ - w 41.800000000000004 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -13379,7 +7204,7 @@ graph ] LabelGraphics [ - text "true" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13402,10 +7227,10 @@ graph node [ - id 2 + id 15 graphics [ - w 50.6 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -13414,7 +7239,7 @@ graph ] LabelGraphics [ - text "false" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13434,49 +7259,288 @@ graph borderDistance 6 ] ] - - node + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 4 + id 0 graphics [ - w 15.400000000000002 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13484,7 +7548,7 @@ graph ] LabelGraphics [ - text "0" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13496,6 +7560,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -13507,11 +7572,11 @@ graph node [ - id 5 + id 1 graphics [ - w 15.400000000000002 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13519,7 +7584,7 @@ graph ] LabelGraphics [ - text "1" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13531,6 +7596,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -13542,11 +7608,11 @@ graph node [ - id 6 + id 2 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13554,7 +7620,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13566,6 +7632,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -13577,10 +7644,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -13589,7 +7656,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13612,10 +7679,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -13624,7 +7691,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13647,11 +7714,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13659,7 +7726,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13671,6 +7738,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -13682,11 +7750,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13694,7 +7762,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -13706,6 +7774,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -13717,11 +7787,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13741,12 +7811,8 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -13758,11 +7824,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13782,12 +7848,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -13799,11 +7861,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13823,12 +7885,7 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EOperation class - ETypedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -13840,11 +7897,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 68 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13864,9 +7921,7 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -13878,11 +7933,11 @@ graph node [ - id 15 + id 11 graphics [ - w 238.70000000000002 - h 40 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -13902,7 +7957,8 @@ graph LabelGraphics [ text " - EStringToStringMapEntry class + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -13914,7 +7970,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -13949,7 +8005,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -13984,7 +8040,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -14019,7 +8075,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -14053,28 +8109,8 @@ graph ] edge [ - source 14 - target 15 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "details reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 14 - target 0 + source 9 + target 6 graphics [ fill "#000000" @@ -14082,7 +8118,7 @@ graph ] LabelGraphics [ - text "eModelElement reference EAnnotation" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14092,8 +8128,8 @@ graph ] edge [ - source 11 - target 11 + source 10 + target 7 graphics [ fill "#000000" @@ -14101,7 +8137,7 @@ graph ] LabelGraphics [ - text "eSuperTypes reference EClass" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14111,8 +8147,8 @@ graph ] edge [ - source 11 - target 13 + source 5 + target 6 graphics [ fill "#000000" @@ -14121,45 +8157,7 @@ graph ] LabelGraphics [ - text "eOperations reference EClass" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 11 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eAllSuperTypes reference EClass" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14169,8 +8167,8 @@ graph ] edge [ - source 0 - target 14 + source 5 + target 7 graphics [ fill "#000000" @@ -14179,7 +8177,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14189,16 +8187,17 @@ graph ] edge [ - source 13 - target 11 + source 5 + target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "eContainingClass reference EOperation" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14208,7 +8207,7 @@ graph ] edge [ - source 0 + source 5 target 11 graphics [ @@ -14218,7 +8217,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14228,8 +8227,8 @@ graph ] edge [ - source 0 - target 12 + source 6 + target 9 graphics [ fill "#000000" @@ -14238,45 +8237,7 @@ graph ] LabelGraphics [ - text "eSubpackages reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eSuperPackage reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "instanceClassName attribute EClassifier" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14286,54 +8247,17 @@ graph ] edge [ - source 0 + source 7 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 7 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsURI attribute EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14343,8 +8267,8 @@ graph ] edge [ - source 12 - target 8 + source 6 + target 5 graphics [ fill "#000000" @@ -14352,7 +8276,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14362,8 +8286,8 @@ graph ] edge [ - source 0 - target 8 + source 7 + target 5 graphics [ fill "#000000" @@ -14371,7 +8295,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14381,8 +8305,8 @@ graph ] edge [ - source 13 - target 1 + source 8 + target 5 graphics [ fill "#000000" @@ -14390,7 +8314,7 @@ graph ] LabelGraphics [ - text "unique attribute ETypedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -14400,8 +8324,8 @@ graph ] edge [ - source 13 - target 4 + source 11 + target 5 graphics [ fill "#000000" @@ -14409,7 +8333,7 @@ graph ] LabelGraphics [ - text "upperBound attribute ETypedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png index 0ea0ef1b..e33711c3 100644 Binary files a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi index cb79481b..fa323f3d 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi @@ -1,10 +1,11 @@ - - -
- - - - - - + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml index 77ffa87d..383a7f99 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml @@ -113,8 +113,8 @@ graph id 3 graphics [ - w 361.90000000000003 - h 54 + w 41.800000000000004 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -122,7 +122,7 @@ graph ] LabelGraphics [ - text "o 1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -134,8 +134,6 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -150,7 +148,7 @@ graph id 4 graphics [ - w 41.800000000000004 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -159,7 +157,7 @@ graph ] LabelGraphics [ - text "true" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -185,8 +183,8 @@ graph id 5 graphics [ - w 50.6 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -194,7 +192,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -206,6 +204,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -220,7 +219,7 @@ graph id 6 graphics [ - w 192.50000000000003 + w 184.8 h 54 type "rectangle" fill "#FFFFFF" @@ -241,8 +240,8 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -257,8 +256,8 @@ graph id 7 graphics [ - w 112.2 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -266,7 +265,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -278,6 +277,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -292,8 +293,8 @@ graph id 8 graphics [ - w 85.80000000000001 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -301,7 +302,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -313,6 +314,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -327,8 +330,8 @@ graph id 9 graphics [ - w 103.4 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -336,7 +339,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -348,6 +351,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -362,102 +366,7 @@ graph id 10 graphics [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 1 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 + w 177.10000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -466,7 +375,7 @@ graph ] LabelGraphics [ - text "Root literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -478,7 +387,7 @@ graph LabelGraphics [ text " - FunctionType enum + InformationLink class " fontSize 14 fontName "Consolas" @@ -490,10 +399,10 @@ graph node [ - id 1 + id 11 graphics [ - w 297.0 + w 161.70000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -502,7 +411,7 @@ graph ] LabelGraphics [ - text "Intermediate literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -514,7 +423,7 @@ graph LabelGraphics [ text " - FunctionType enum + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -526,11 +435,11 @@ graph node [ - id 2 + id 12 graphics [ - w 226.60000000000002 - h 40 + w 112.2 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -538,7 +447,7 @@ graph ] LabelGraphics [ - text "Leaf literal FunctionType" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -550,7 +459,6 @@ graph LabelGraphics [ text " - FunctionType enum " fontSize 14 fontName "Consolas" @@ -562,11 +470,11 @@ graph node [ - id 3 + id 13 graphics [ - w 361.90000000000003 - h 54 + w 85.80000000000001 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -574,7 +482,7 @@ graph ] LabelGraphics [ - text "o 1" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -586,8 +494,6 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -599,10 +505,10 @@ graph node [ - id 4 + id 14 graphics [ - w 41.800000000000004 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -611,7 +517,7 @@ graph ] LabelGraphics [ - text "true" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -634,10 +540,10 @@ graph node [ - id 5 + id 15 graphics [ - w 50.6 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -646,7 +552,7 @@ graph ] LabelGraphics [ - text "false" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -666,187 +572,67 @@ graph borderDistance 6 ] ] - - node + edge + [ + source 11 + target 6 + graphics [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 9 + target 7 + graphics [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 10 + target 7 + graphics [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] + ] edge [ - source 6 - target 3 + source 9 + target 8 graphics [ fill "#000000" @@ -854,7 +640,7 @@ graph ] LabelGraphics [ - text "model reference FunctionalElement" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -864,17 +650,16 @@ graph ] edge [ - source 3 - target 6 + source 10 + target 8 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -884,16 +669,17 @@ graph ] edge [ - source 6 - target 2 + source 5 + target 6 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "type attribute Function" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -901,1768 +687,137 @@ graph position "thead" ] ] -] -graph -[ - node + edge + [ + source 5 + target 7 + graphics [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + width 3 + targetArrow "standard" ] - - node + LabelGraphics [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 5 + target 8 + graphics [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + width 3 + targetArrow "standard" ] - - node + LabelGraphics [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 2 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 1 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" + text "data reference FunctionalInterface" fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 8 + target 9 + graphics [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 8 + target 10 + graphics [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 7 + target 9 + graphics [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + width 3 + targetArrow "standard" ] - - node + LabelGraphics [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] + ] edge [ source 6 - target 3 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "model reference FunctionalElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2672,17 +827,16 @@ graph ] edge [ - source 3 - target 6 + source 6 + target 5 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2692,8 +846,8 @@ graph ] edge [ - source 6 - target 2 + source 7 + target 5 graphics [ fill "#000000" @@ -2701,7 +855,26 @@ graph ] LabelGraphics [ - text "type attribute Function" + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2824,43 +997,6 @@ graph [ id 3 graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics [ w 41.800000000000004 h 26 @@ -2894,7 +1030,7 @@ graph node [ - id 5 + id 4 graphics [ w 50.6 @@ -2929,11 +1065,11 @@ graph node [ - id 6 + id 5 graphics [ - w 192.50000000000003 - h 54 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2953,113 +1089,7 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -3071,11 +1101,11 @@ graph node [ - id 10 + id 6 graphics [ - w 103.4 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3083,93 +1113,35 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 fontName "Monospace" autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 2 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] -] -graph -[ + node [ - id 0 + id 7 graphics [ - w 226.60000000000002 + w 177.10000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -3178,7 +1150,7 @@ graph ] LabelGraphics [ - text "Root literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3190,7 +1162,7 @@ graph LabelGraphics [ text " - FunctionType enum + InformationLink class " fontSize 14 fontName "Consolas" @@ -3202,10 +1174,10 @@ graph node [ - id 1 + id 8 graphics [ - w 297.0 + w 177.10000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -3214,7 +1186,7 @@ graph ] LabelGraphics [ - text "Intermediate literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3226,7 +1198,7 @@ graph LabelGraphics [ text " - FunctionType enum + InformationLink class " fontSize 14 fontName "Consolas" @@ -3238,11 +1210,11 @@ graph node [ - id 2 + id 9 graphics [ - w 226.60000000000002 - h 40 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3250,7 +1222,7 @@ graph ] LabelGraphics [ - text "Leaf literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3262,7 +1234,8 @@ graph LabelGraphics [ text " - FunctionType enum + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -3274,10 +1247,10 @@ graph node [ - id 3 + id 10 graphics [ - w 361.90000000000003 + w 184.8 h 54 type "rectangle" fill "#FFFFFF" @@ -3286,7 +1259,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3298,8 +1271,8 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -3311,10 +1284,46 @@ graph node [ - id 4 + id 11 graphics [ - w 41.800000000000004 + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 h 26 type "rectangle" fill "#FFFFFF" @@ -3323,7 +1332,7 @@ graph ] LabelGraphics [ - text "true" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3346,10 +1355,10 @@ graph node [ - id 5 + id 13 graphics [ - w 50.6 + w 85.80000000000001 h 26 type "rectangle" fill "#FFFFFF" @@ -3358,7 +1367,7 @@ graph ] LabelGraphics [ - text "false" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3381,11 +1390,11 @@ graph node [ - id 6 + id 14 graphics [ - w 192.50000000000003 - h 54 + w 103.4 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3393,7 +1402,7 @@ graph ] LabelGraphics [ - text "null" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3405,8 +1414,6 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class " fontSize 14 fontName "Consolas" @@ -3418,10 +1425,10 @@ graph node [ - id 7 + id 15 graphics [ - w 112.2 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -3430,7 +1437,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3450,123 +1457,232 @@ graph borderDistance 6 ] ] - - node + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 6 + target 7 + graphics [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] + ] edge [ source 6 - target 3 + target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "model reference FunctionalElement" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3576,8 +1692,8 @@ graph ] edge [ - source 3 - target 6 + source 6 + target 11 graphics [ fill "#000000" @@ -3586,7 +1702,7 @@ graph ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3597,7 +1713,7 @@ graph edge [ source 6 - target 0 + target 5 graphics [ fill "#000000" @@ -3605,7 +1721,7 @@ graph ] LabelGraphics [ - text "type attribute Function" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3613,162 +1729,54 @@ graph position "thead" ] ] -] -graph -[ - node + edge + [ + source 9 + target 5 + graphics [ - id 0 - graphics - [ - w 254.10000000000002 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 10 + target 5 + graphics [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - + ] +] +graph +[ node [ - id 4 + id 0 graphics [ - w 15.400000000000002 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3776,7 +1784,7 @@ graph ] LabelGraphics [ - text "0" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3788,6 +1796,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -3799,11 +1808,11 @@ graph node [ - id 5 + id 1 graphics [ - w 15.400000000000002 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3811,7 +1820,7 @@ graph ] LabelGraphics [ - text "1" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3823,6 +1832,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -3834,11 +1844,11 @@ graph node [ - id 6 + id 2 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3846,7 +1856,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3858,6 +1868,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -3869,10 +1880,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -3881,7 +1892,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3904,10 +1915,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -3916,7 +1927,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3939,11 +1950,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3951,7 +1962,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3963,6 +1974,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -3974,11 +1986,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3986,7 +1998,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3998,6 +2010,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -4009,11 +2023,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4033,13 +2047,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -4051,11 +2060,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 124 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4075,13 +2084,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -4093,11 +2097,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4117,12 +2121,7 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -4134,11 +2133,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 124 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4158,13 +2157,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -4176,11 +2170,11 @@ graph node [ - id 15 + id 11 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4200,13 +2194,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + InformationLink class " fontSize 14 fontName "Consolas" @@ -4218,7 +2206,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -4253,7 +2241,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -4288,7 +2276,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -4323,7 +2311,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -4341,189 +2329,32 @@ graph fontSize 16 fontName "Monospace" autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 14 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 15 - target 13 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 11 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 12 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 14 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 15 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] edge [ - source 0 - target 13 + source 9 + target 7 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eSubpackages reference EPackage" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4533,8 +2364,8 @@ graph ] edge [ - source 13 - target 0 + source 11 + target 8 graphics [ fill "#000000" @@ -4542,7 +2373,7 @@ graph ] LabelGraphics [ - text "eSuperPackage reference EPackage" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4552,8 +2383,8 @@ graph ] edge [ - source 12 - target 8 + source 11 + target 7 graphics [ fill "#000000" @@ -4561,7 +2392,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4571,16 +2402,17 @@ graph ] edge [ - source 11 + source 5 target 6 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4590,16 +2422,17 @@ graph ] edge [ - source 11 - target 10 + source 5 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4609,16 +2442,17 @@ graph ] edge [ - source 12 + source 5 target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4628,16 +2462,17 @@ graph ] edge [ - source 0 + source 5 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4647,8 +2482,8 @@ graph ] edge [ - source 12 - target 10 + source 7 + target 11 graphics [ fill "#000000" @@ -4656,7 +2491,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4666,16 +2501,17 @@ graph ] edge [ - source 11 - target 10 + source 8 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4685,16 +2521,17 @@ graph ] edge [ - source 13 - target 6 + source 7 + target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4704,8 +2541,8 @@ graph ] edge [ - source 0 - target 9 + source 6 + target 5 graphics [ fill "#000000" @@ -4713,7 +2550,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4723,8 +2560,8 @@ graph ] edge [ - source 13 - target 8 + source 7 + target 5 graphics [ fill "#000000" @@ -4732,7 +2569,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4742,8 +2579,8 @@ graph ] edge [ - source 0 - target 8 + source 8 + target 5 graphics [ fill "#000000" @@ -4751,7 +2588,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4759,231 +2596,35 @@ graph position "thead" ] ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Root literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 297.0 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Intermediate literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 226.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "Leaf literal FunctionType" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionType enum - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 361.90000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" ] - + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 6 + id 0 graphics [ - w 192.50000000000003 - h 54 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4991,7 +2632,7 @@ graph ] LabelGraphics [ - text "null" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5003,8 +2644,7 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -5016,11 +2656,11 @@ graph node [ - id 7 + id 1 graphics [ - w 112.2 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5028,7 +2668,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5040,6 +2680,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -5051,11 +2692,11 @@ graph node [ - id 8 + id 2 graphics [ - w 85.80000000000001 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5063,7 +2704,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5075,6 +2716,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -5086,10 +2728,10 @@ graph node [ - id 9 + id 3 graphics [ - w 103.4 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -5098,7 +2740,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5121,10 +2763,10 @@ graph node [ - id 10 + id 4 graphics [ - w 103.4 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -5133,7 +2775,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5153,73 +2795,13 @@ graph borderDistance 6 ] ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 2 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ + node [ - id 0 + id 5 graphics [ - w 226.60000000000002 + w 207.9 h 40 type "rectangle" fill "#FFFFFF" @@ -5228,7 +2810,7 @@ graph ] LabelGraphics [ - text "Root literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5240,7 +2822,7 @@ graph LabelGraphics [ text " - FunctionType enum + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -5252,11 +2834,11 @@ graph node [ - id 1 + id 6 graphics [ - w 297.0 - h 40 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5264,7 +2846,7 @@ graph ] LabelGraphics [ - text "Intermediate literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5276,7 +2858,8 @@ graph LabelGraphics [ text " - FunctionType enum + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -5288,11 +2871,11 @@ graph node [ - id 2 + id 7 graphics [ - w 226.60000000000002 - h 40 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5300,7 +2883,7 @@ graph ] LabelGraphics [ - text "Leaf literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5312,7 +2895,8 @@ graph LabelGraphics [ text " - FunctionType enum + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -5324,10 +2908,10 @@ graph node [ - id 3 + id 8 graphics [ - w 361.90000000000003 + w 184.8 h 54 type "rectangle" fill "#FFFFFF" @@ -5336,7 +2920,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5348,8 +2932,8 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -5361,11 +2945,11 @@ graph node [ - id 4 + id 9 graphics [ - w 41.800000000000004 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5373,7 +2957,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5385,6 +2969,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -5396,11 +2981,11 @@ graph node [ - id 5 + id 10 graphics [ - w 50.6 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5408,7 +2993,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5420,6 +3005,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -5431,10 +3017,10 @@ graph node [ - id 6 + id 11 graphics [ - w 192.50000000000003 + w 177.10000000000002 h 54 type "rectangle" fill "#FFFFFF" @@ -5455,8 +3041,8 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -5468,7 +3054,7 @@ graph node [ - id 7 + id 12 graphics [ w 112.2 @@ -5503,7 +3089,7 @@ graph node [ - id 8 + id 13 graphics [ w 85.80000000000001 @@ -5538,7 +3124,7 @@ graph node [ - id 9 + id 14 graphics [ w 103.4 @@ -5573,7 +3159,7 @@ graph node [ - id 10 + id 15 graphics [ w 103.4 @@ -5606,17 +3192,136 @@ graph ] ] edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge [ source 6 - target 3 + target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "model reference FunctionalElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5626,8 +3331,8 @@ graph ] edge [ - source 3 - target 6 + source 7 + target 10 graphics [ fill "#000000" @@ -5636,7 +3341,7 @@ graph ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5647,7 +3352,7 @@ graph edge [ source 6 - target 1 + target 5 graphics [ fill "#000000" @@ -5655,7 +3360,64 @@ graph ] LabelGraphics [ - text "type attribute Function" + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5671,8 +3433,8 @@ graph id 0 graphics [ - w 254.10000000000002 - h 110 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5680,7 +3442,7 @@ graph ] LabelGraphics [ - text "o 1" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5692,12 +3454,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -5712,8 +3469,8 @@ graph id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5721,7 +3478,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5733,6 +3490,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -5747,8 +3505,8 @@ graph id 2 graphics [ - w 50.6 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5756,7 +3514,7 @@ graph ] LabelGraphics [ - text "false" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5768,6 +3526,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -5782,7 +3541,7 @@ graph id 3 graphics [ - w 24.200000000000003 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -5791,7 +3550,7 @@ graph ] LabelGraphics [ - text "-1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5817,7 +3576,7 @@ graph id 4 graphics [ - w 15.400000000000002 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -5826,7 +3585,7 @@ graph ] LabelGraphics [ - text "0" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5852,8 +3611,8 @@ graph id 5 graphics [ - w 15.400000000000002 - h 26 + w 269.5 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5861,7 +3620,7 @@ graph ] LabelGraphics [ - text "1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5873,6 +3632,7 @@ graph LabelGraphics [ text " + FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -5887,8 +3647,8 @@ graph id 6 graphics [ - w 33.0 - h 26 + w 192.50000000000003 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5896,7 +3656,7 @@ graph ] LabelGraphics [ - text ""A"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5908,6 +3668,8 @@ graph LabelGraphics [ text " + FunctionalElement class + Function class " fontSize 14 fontName "Consolas" @@ -5922,148 +3684,8 @@ graph id 7 graphics [ - w 33.0 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text ""B"" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 8 - graphics - [ - w 94.60000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text ""nsPrefix"" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 9 - graphics - [ - w 68.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text ""nsUri"" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 10 - graphics - [ - w 121.00000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text ""packageName"" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 11 - graphics - [ - w 269.5 - h 110 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6083,12 +3705,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -6100,11 +3717,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 68 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6124,9 +3741,8 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -6138,11 +3754,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6162,12 +3778,7 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -6179,11 +3790,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6203,12 +3814,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -6220,11 +3827,11 @@ graph node [ - id 15 + id 11 graphics [ - w 269.5 - h 68 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6244,9 +3851,8 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -6258,7 +3864,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -6293,7 +3899,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -6328,7 +3934,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -6363,7 +3969,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -6397,35 +4003,17 @@ graph ] edge [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 15 - target 0 + source 6 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "eModelElement reference EAnnotation" + text "interface reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6435,8 +4023,8 @@ graph ] edge [ - source 11 - target 0 + source 6 + target 5 graphics [ fill "#000000" @@ -6444,7 +4032,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "model reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6454,16 +4042,17 @@ graph ] edge [ - source 13 - target 0 + source 5 + target 6 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "ePackage reference EClassifier" + text "rootElements reference FunctionalArchitectureModel" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6473,8 +4062,8 @@ graph ] edge [ - source 14 - target 0 + source 9 + target 8 graphics [ fill "#000000" @@ -6482,7 +4071,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6492,8 +4081,8 @@ graph ] edge [ - source 0 - target 12 + source 7 + target 8 graphics [ fill "#000000" @@ -6502,7 +4091,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6512,8 +4101,8 @@ graph ] edge [ - source 0 - target 15 + source 7 + target 10 graphics [ fill "#000000" @@ -6522,7 +4111,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6532,7 +4121,7 @@ graph ] edge [ - source 0 + source 7 target 11 graphics [ @@ -6542,7 +4131,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6552,17 +4141,16 @@ graph ] edge [ - source 0 - target 13 + source 7 + target 6 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "element reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6572,8 +4160,8 @@ graph ] edge [ - source 0 - target 14 + source 8 + target 9 graphics [ fill "#000000" @@ -6582,7 +4170,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6592,7 +4180,7 @@ graph ] edge [ - source 12 + source 8 target 7 graphics [ @@ -6601,26 +4189,7 @@ graph ] LabelGraphics [ - text "source attribute EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "instanceClassName attribute EClassifier" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6630,27 +4199,8 @@ graph ] edge [ - source 11 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "instanceTypeName attribute EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 10 + source 10 + target 7 graphics [ fill "#000000" @@ -6658,7 +4208,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6669,64 +4219,7 @@ graph edge [ source 11 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 14 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 9 + target 7 graphics [ fill "#000000" @@ -6734,7 +4227,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6744,179 +4237,33 @@ graph ] edge [ - source 0 - target 8 + source 6 + target 2 graphics [ fill "#000000" targetArrow "standard" - ] - LabelGraphics - [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 254.10000000000002 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node + ] + LabelGraphics [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - + ] +] +graph +[ node [ - id 4 + id 0 graphics [ - w 15.400000000000002 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6924,7 +4271,7 @@ graph ] LabelGraphics [ - text "0" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6936,6 +4283,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -6947,11 +4295,11 @@ graph node [ - id 5 + id 1 graphics [ - w 15.400000000000002 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6959,7 +4307,7 @@ graph ] LabelGraphics [ - text "1" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6971,6 +4319,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -6982,11 +4331,11 @@ graph node [ - id 6 + id 2 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6994,7 +4343,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7006,6 +4355,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -7017,10 +4367,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -7029,7 +4379,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7052,10 +4402,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -7064,7 +4414,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7087,11 +4437,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 269.5 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7099,7 +4449,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7111,6 +4461,7 @@ graph LabelGraphics [ text " + FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -7122,11 +4473,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 192.50000000000003 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7134,7 +4485,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7146,6 +4497,8 @@ graph LabelGraphics [ text " + FunctionalElement class + Function class " fontSize 14 fontName "Consolas" @@ -7157,11 +4510,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 124 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7181,13 +4534,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -7199,11 +4546,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7223,13 +4570,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -7241,11 +4583,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 96 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7265,11 +4607,7 @@ graph LabelGraphics [ text " - EEnumLiteral class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -7281,11 +4619,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 68 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7305,9 +4643,8 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -7319,11 +4656,11 @@ graph node [ - id 15 + id 11 graphics [ - w 269.5 - h 96 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7343,11 +4680,7 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - ETypeParameter class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -7359,7 +4692,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -7394,7 +4727,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -7429,7 +4762,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -7442,180 +4775,64 @@ graph LabelGraphics [ text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 19 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 14 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 15 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eTypeParameters reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 13 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eLiterals reference EEnum" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 11 - graphics - [ - fill "#000000" - targetArrow "standard" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "eEnum reference EEnumLiteral" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] edge [ - source 0 - target 14 + source 6 + target 7 graphics [ fill "#000000" @@ -7624,7 +4841,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "interface reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7634,17 +4851,16 @@ graph ] edge [ - source 0 - target 11 + source 6 + target 5 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "model reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7654,8 +4870,8 @@ graph ] edge [ - source 0 - target 12 + source 5 + target 6 graphics [ fill "#000000" @@ -7664,26 +4880,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 14 - target 10 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "source attribute EAnnotation" + text "rootElements reference FunctionalArchitectureModel" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7693,7 +4890,7 @@ graph ] edge [ - source 11 + source 9 target 8 graphics [ @@ -7702,7 +4899,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7713,7 +4910,7 @@ graph edge [ source 11 - target 9 + target 10 graphics [ fill "#000000" @@ -7721,7 +4918,7 @@ graph ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7731,16 +4928,17 @@ graph ] edge [ - source 12 - target 9 + source 7 + target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7750,16 +4948,17 @@ graph ] edge [ - source 11 - target 2 + source 7 + target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "serializable attribute EDataType" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7769,8 +4968,8 @@ graph ] edge [ - source 12 - target 2 + source 7 + target 6 graphics [ fill "#000000" @@ -7778,7 +4977,7 @@ graph ] LabelGraphics [ - text "serializable attribute EDataType" + text "element reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7788,16 +4987,17 @@ graph ] edge [ - source 13 + source 8 target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "literal attribute EEnumLiteral" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7807,16 +5007,17 @@ graph ] edge [ - source 0 - target 10 + source 10 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7826,8 +5027,8 @@ graph ] edge [ - source 12 - target 10 + source 8 + target 7 graphics [ fill "#000000" @@ -7835,7 +5036,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7845,8 +5046,8 @@ graph ] edge [ - source 0 - target 9 + source 10 + target 7 graphics [ fill "#000000" @@ -7854,7 +5055,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7864,8 +5065,8 @@ graph ] edge [ - source 0 - target 8 + source 6 + target 0 graphics [ fill "#000000" @@ -7873,7 +5074,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "type attribute Function" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7889,8 +5090,8 @@ graph id 0 graphics [ - w 254.10000000000002 - h 110 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7898,7 +5099,7 @@ graph ] LabelGraphics [ - text "o 1" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7910,12 +5111,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -7930,8 +5126,8 @@ graph id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7939,7 +5135,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -7951,6 +5147,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -7965,148 +5162,8 @@ graph id 2 graphics [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 4 - graphics - [ - w 15.400000000000002 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "0" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 5 - graphics - [ - w 15.400000000000002 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 6 - graphics - [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8114,7 +5171,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8126,6 +5183,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -8137,10 +5195,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -8149,7 +5207,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8172,10 +5230,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -8184,7 +5242,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8207,11 +5265,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 269.5 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8219,7 +5277,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8231,6 +5289,7 @@ graph LabelGraphics [ text " + FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -8242,11 +5301,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 192.50000000000003 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8254,7 +5313,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -8266,6 +5325,8 @@ graph LabelGraphics [ text " + FunctionalElement class + Function class " fontSize 14 fontName "Consolas" @@ -8277,11 +5338,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 110 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8301,12 +5362,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -8318,11 +5374,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8342,12 +5398,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -8359,11 +5411,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 124 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8383,13 +5435,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -8401,11 +5448,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 96 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8425,11 +5472,7 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - ETypeParameter class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -8441,11 +5484,11 @@ graph node [ - id 15 + id 11 graphics [ - w 269.5 - h 68 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -8465,9 +5508,8 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -8479,7 +5521,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -8514,7 +5556,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -8549,7 +5591,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -8584,7 +5626,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -8618,35 +5660,17 @@ graph ] edge [ - source 15 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 0 + source 6 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "ePackage reference EClassifier" + text "interface reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8656,8 +5680,8 @@ graph ] edge [ - source 13 - target 0 + source 6 + target 5 graphics [ fill "#000000" @@ -8665,7 +5689,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "model reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8675,8 +5699,8 @@ graph ] edge [ - source 13 - target 14 + source 5 + target 6 graphics [ fill "#000000" @@ -8685,7 +5709,7 @@ graph ] LabelGraphics [ - text "eTypeParameters reference EClassifier" + text "rootElements reference FunctionalArchitectureModel" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8695,17 +5719,16 @@ graph ] edge [ - source 0 - target 15 + source 10 + target 9 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8715,8 +5738,8 @@ graph ] edge [ - source 0 - target 11 + source 7 + target 8 graphics [ fill "#000000" @@ -8725,7 +5748,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8735,8 +5758,8 @@ graph ] edge [ - source 0 - target 13 + source 7 + target 9 graphics [ fill "#000000" @@ -8745,7 +5768,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8755,8 +5778,8 @@ graph ] edge [ - source 0 - target 12 + source 7 + target 11 graphics [ fill "#000000" @@ -8765,26 +5788,7 @@ graph ] LabelGraphics [ - text "eSubpackages reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eSuperPackage reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8794,7 +5798,7 @@ graph ] edge [ - source 11 + source 7 target 6 graphics [ @@ -8803,45 +5807,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 7 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "instanceClassName attribute EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 1 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "serializable attribute EDataType" + text "element reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8851,54 +5817,17 @@ graph ] edge [ - source 0 + source 9 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsURI attribute EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8908,8 +5837,8 @@ graph ] edge [ - source 12 - target 10 + source 8 + target 7 graphics [ fill "#000000" @@ -8917,7 +5846,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8927,8 +5856,8 @@ graph ] edge [ - source 0 - target 8 + source 9 + target 7 graphics [ fill "#000000" @@ -8936,7 +5865,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -8945,180 +5874,53 @@ graph ] ] edge - [ - source 12 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 254.10000000000002 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 6 + target 0 + graphics [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 4 + id 0 graphics [ - w 15.400000000000002 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9126,7 +5928,7 @@ graph ] LabelGraphics [ - text "0" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9138,6 +5940,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -9149,11 +5952,11 @@ graph node [ - id 5 + id 1 graphics [ - w 15.400000000000002 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9161,7 +5964,7 @@ graph ] LabelGraphics [ - text "1" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9173,6 +5976,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -9184,11 +5988,11 @@ graph node [ - id 6 + id 2 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9196,7 +6000,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9208,6 +6012,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -9219,10 +6024,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -9231,7 +6036,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9254,10 +6059,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -9266,7 +6071,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9289,11 +6094,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9301,7 +6106,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9313,6 +6118,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -9324,11 +6130,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9336,7 +6142,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -9348,6 +6154,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -9359,11 +6167,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9383,12 +6191,8 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -9400,11 +6204,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9424,12 +6228,7 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -9441,11 +6240,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 110 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9465,12 +6264,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -9482,11 +6277,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 96 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9506,11 +6301,7 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - ETypeParameter class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -9522,11 +6313,11 @@ graph node [ - id 15 + id 11 graphics [ - w 269.5 - h 110 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -9546,12 +6337,8 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -9563,7 +6350,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -9598,7 +6385,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -9633,7 +6420,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -9668,7 +6455,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -9691,126 +6478,27 @@ graph ] LabelGraphics [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 15 - target 13 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 14 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eTypeParameters reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 11 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 15 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] edge [ - source 0 - target 12 + source 8 + target 7 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eSubpackages reference EPackage" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9820,17 +6508,16 @@ graph ] edge [ - source 12 - target 13 + source 10 + target 6 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eSubpackages reference EPackage" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9840,16 +6527,17 @@ graph ] edge [ - source 12 - target 0 + source 5 + target 6 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "eSuperPackage reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9859,16 +6547,17 @@ graph ] edge [ - source 13 - target 12 + source 5 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "eSuperPackage reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9878,16 +6567,17 @@ graph ] edge [ - source 11 - target 1 + source 5 + target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "abstract attribute EClass" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9897,16 +6587,17 @@ graph ] edge [ - source 11 - target 2 + source 5 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "interface attribute EClass" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9916,35 +6607,17 @@ graph ] edge [ - source 11 + source 7 target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 15 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "instanceTypeName attribute EClassifier" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9954,35 +6627,17 @@ graph ] edge [ - source 0 + source 6 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -9992,8 +6647,8 @@ graph ] edge [ - source 0 - target 9 + source 6 + target 5 graphics [ fill "#000000" @@ -10001,7 +6656,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10011,8 +6666,8 @@ graph ] edge [ - source 13 - target 7 + source 7 + target 5 graphics [ fill "#000000" @@ -10020,7 +6675,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10030,8 +6685,8 @@ graph ] edge [ - source 12 - target 7 + source 9 + target 5 graphics [ fill "#000000" @@ -10039,7 +6694,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10049,8 +6704,8 @@ graph ] edge [ - source 0 - target 8 + source 11 + target 5 graphics [ fill "#000000" @@ -10058,7 +6713,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10182,8 +6837,8 @@ graph id 3 graphics [ - w 361.90000000000003 - h 54 + w 41.800000000000004 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10191,7 +6846,7 @@ graph ] LabelGraphics [ - text "o 1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10203,8 +6858,6 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -10219,7 +6872,7 @@ graph id 4 graphics [ - w 41.800000000000004 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -10228,7 +6881,7 @@ graph ] LabelGraphics [ - text "true" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10254,8 +6907,8 @@ graph id 5 graphics [ - w 50.6 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10263,7 +6916,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10275,6 +6928,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -10289,7 +6943,7 @@ graph id 6 graphics [ - w 192.50000000000003 + w 184.8 h 54 type "rectangle" fill "#FFFFFF" @@ -10310,8 +6964,8 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -10325,6 +6979,190 @@ graph [ id 7 graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics [ w 112.2 h 26 @@ -10358,7 +7196,7 @@ graph node [ - id 8 + id 13 graphics [ w 85.80000000000001 @@ -10393,7 +7231,7 @@ graph node [ - id 9 + id 14 graphics [ w 103.4 @@ -10428,7 +7266,7 @@ graph node [ - id 10 + id 15 graphics [ w 103.4 @@ -10462,8 +7300,8 @@ graph ] edge [ - source 6 - target 3 + source 11 + target 9 graphics [ fill "#000000" @@ -10471,7 +7309,7 @@ graph ] LabelGraphics [ - text "model reference FunctionalElement" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10481,7 +7319,7 @@ graph ] edge [ - source 3 + source 5 target 6 graphics [ @@ -10491,7 +7329,107 @@ graph ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10502,7 +7440,7 @@ graph edge [ source 6 - target 1 + target 5 graphics [ fill "#000000" @@ -10510,7 +7448,7 @@ graph ] LabelGraphics [ - text "type attribute Function" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -10518,162 +7456,92 @@ graph position "thead" ] ] -] -graph -[ - node + edge + [ + source 7 + target 5 + graphics [ - id 0 - graphics - [ - w 254.10000000000002 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 8 + target 5 + graphics [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" ] - + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 4 + id 0 graphics [ - w 15.400000000000002 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10681,7 +7549,7 @@ graph ] LabelGraphics [ - text "0" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10693,6 +7561,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -10704,11 +7573,11 @@ graph node [ - id 5 + id 1 graphics [ - w 15.400000000000002 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10716,7 +7585,7 @@ graph ] LabelGraphics [ - text "1" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10728,6 +7597,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -10739,11 +7609,11 @@ graph node [ - id 6 + id 2 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10751,7 +7621,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10763,6 +7633,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -10774,10 +7645,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -10786,7 +7657,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10809,10 +7680,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -10821,7 +7692,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10844,11 +7715,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10856,7 +7727,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10868,6 +7739,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -10879,11 +7751,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10891,7 +7763,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -10903,6 +7775,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -10914,11 +7788,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10938,12 +7812,8 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -10955,11 +7825,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -10979,12 +7849,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -10996,11 +7862,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11020,12 +7886,7 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EOperation class - ETypedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -11037,11 +7898,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 68 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11061,9 +7922,7 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -11075,11 +7934,11 @@ graph node [ - id 15 + id 11 graphics [ - w 238.70000000000002 - h 40 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -11099,7 +7958,8 @@ graph LabelGraphics [ text " - EStringToStringMapEntry class + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -11111,7 +7971,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -11146,7 +8006,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -11181,7 +8041,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -11216,7 +8076,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -11250,28 +8110,8 @@ graph ] edge [ - source 14 - target 15 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "details reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 14 - target 0 + source 9 + target 6 graphics [ fill "#000000" @@ -11279,7 +8119,7 @@ graph ] LabelGraphics [ - text "eModelElement reference EAnnotation" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11289,8 +8129,8 @@ graph ] edge [ - source 11 - target 11 + source 10 + target 7 graphics [ fill "#000000" @@ -11298,7 +8138,7 @@ graph ] LabelGraphics [ - text "eSuperTypes reference EClass" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11308,8 +8148,8 @@ graph ] edge [ - source 11 - target 13 + source 5 + target 6 graphics [ fill "#000000" @@ -11318,45 +8158,7 @@ graph ] LabelGraphics [ - text "eOperations reference EClass" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 11 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eAllSuperTypes reference EClass" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11366,8 +8168,8 @@ graph ] edge [ - source 0 - target 14 + source 5 + target 7 graphics [ fill "#000000" @@ -11376,26 +8178,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 11 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eContainingClass reference EOperation" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11405,8 +8188,8 @@ graph ] edge [ - source 0 - target 11 + source 5 + target 8 graphics [ fill "#000000" @@ -11415,7 +8198,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11425,8 +8208,8 @@ graph ] edge [ - source 0 - target 12 + source 5 + target 11 graphics [ fill "#000000" @@ -11435,45 +8218,7 @@ graph ] LabelGraphics [ - text "eSubpackages reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eSuperPackage reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "instanceClassName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11483,16 +8228,17 @@ graph ] edge [ - source 11 + source 6 target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11502,54 +8248,17 @@ graph ] edge [ - source 0 + source 7 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 7 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsURI attribute EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11559,8 +8268,8 @@ graph ] edge [ - source 12 - target 8 + source 6 + target 5 graphics [ fill "#000000" @@ -11568,7 +8277,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11578,8 +8287,8 @@ graph ] edge [ - source 0 - target 8 + source 7 + target 5 graphics [ fill "#000000" @@ -11587,7 +8296,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11597,8 +8306,8 @@ graph ] edge [ - source 13 - target 1 + source 8 + target 5 graphics [ fill "#000000" @@ -11606,7 +8315,7 @@ graph ] LabelGraphics [ - text "unique attribute ETypedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -11616,8 +8325,8 @@ graph ] edge [ - source 13 - target 4 + source 11 + target 5 graphics [ fill "#000000" @@ -11625,7 +8334,7 @@ graph ] LabelGraphics [ - text "upperBound attribute ETypedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png index b5fea093..05355ee6 100644 Binary files a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi index 4a9086fe..956b6f1b 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi @@ -1,10 +1,11 @@ - - -
- - - - - - + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml index 55dc70ba..ed77ebc2 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml @@ -113,8 +113,8 @@ graph id 3 graphics [ - w 361.90000000000003 - h 54 + w 41.800000000000004 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -122,7 +122,7 @@ graph ] LabelGraphics [ - text "o 1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -134,8 +134,6 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -150,7 +148,7 @@ graph id 4 graphics [ - w 41.800000000000004 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -159,7 +157,7 @@ graph ] LabelGraphics [ - text "true" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -185,8 +183,8 @@ graph id 5 graphics [ - w 50.6 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -194,7 +192,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -206,6 +204,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -220,7 +219,7 @@ graph id 6 graphics [ - w 192.50000000000003 + w 184.8 h 54 type "rectangle" fill "#FFFFFF" @@ -241,8 +240,8 @@ graph LabelGraphics [ text " - FunctionalElement class - Function class + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -257,8 +256,8 @@ graph id 7 graphics [ - w 112.2 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -266,7 +265,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -278,6 +277,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -292,8 +293,8 @@ graph id 8 graphics [ - w 85.80000000000001 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -301,7 +302,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -313,6 +314,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -327,8 +330,8 @@ graph id 9 graphics [ - w 103.4 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -336,7 +339,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -348,6 +351,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -362,102 +366,7 @@ graph id 10 graphics [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 6 - target 3 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "model reference FunctionalElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "rootElements reference FunctionalArchitectureModel" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 2 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "type attribute Function" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 226.60000000000002 + w 177.10000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -466,7 +375,7 @@ graph ] LabelGraphics [ - text "Root literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -478,7 +387,7 @@ graph LabelGraphics [ text " - FunctionType enum + InformationLink class " fontSize 14 fontName "Consolas" @@ -490,11 +399,11 @@ graph node [ - id 1 + id 11 graphics [ - w 297.0 - h 40 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -502,7 +411,7 @@ graph ] LabelGraphics [ - text "Intermediate literal FunctionType" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -514,7 +423,8 @@ graph LabelGraphics [ text " - FunctionType enum + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -526,11 +436,11 @@ graph node [ - id 2 + id 12 graphics [ - w 226.60000000000002 - h 40 + w 112.2 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -538,7 +448,7 @@ graph ] LabelGraphics [ - text "Leaf literal FunctionType" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -550,7 +460,6 @@ graph LabelGraphics [ text " - FunctionType enum " fontSize 14 fontName "Consolas" @@ -562,11 +471,11 @@ graph node [ - id 3 + id 13 graphics [ - w 361.90000000000003 - h 54 + w 85.80000000000001 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -574,7 +483,7 @@ graph ] LabelGraphics [ - text "o 1" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -586,8 +495,6 @@ graph LabelGraphics [ text " - FunctionalArchitectureModel class DefinedPart - FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -599,10 +506,10 @@ graph node [ - id 4 + id 14 graphics [ - w 41.800000000000004 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -611,7 +518,7 @@ graph ] LabelGraphics [ - text "true" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -634,10 +541,10 @@ graph node [ - id 5 + id 15 graphics [ - w 50.6 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -646,7 +553,7 @@ graph ] LabelGraphics [ - text "false" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -666,187 +573,67 @@ graph borderDistance 6 ] ] - - node + edge + [ + source 9 + target 7 + graphics [ - id 6 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FunctionalElement class - Function class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 7 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 10 + target 7 + graphics [ - id 8 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 9 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 9 + target 8 + graphics [ - id 10 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] + ] edge [ - source 6 - target 3 + source 10 + target 8 graphics [ fill "#000000" @@ -854,7 +641,7 @@ graph ] LabelGraphics [ - text "model reference FunctionalElement" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -864,7 +651,7 @@ graph ] edge [ - source 3 + source 5 target 6 graphics [ @@ -874,7 +661,7 @@ graph ] LabelGraphics [ - text "rootElements reference FunctionalArchitectureModel" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -884,16 +671,17 @@ graph ] edge [ - source 6 - target 0 + source 5 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "type attribute Function" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -901,162 +689,210 @@ graph position "thead" ] ] -] -graph -[ - node + edge + [ + source 5 + target 8 + graphics [ - id 0 - graphics - [ - w 254.10000000000002 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + width 3 + targetArrow "standard" ] - - node + LabelGraphics [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 5 + target 11 + graphics [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + width 3 + targetArrow "standard" ] - - node + LabelGraphics [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 4 + id 0 graphics [ - w 15.400000000000002 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1064,7 +900,7 @@ graph ] LabelGraphics [ - text "0" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1076,6 +912,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -1087,11 +924,11 @@ graph node [ - id 5 + id 1 graphics [ - w 15.400000000000002 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1099,7 +936,7 @@ graph ] LabelGraphics [ - text "1" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1111,6 +948,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -1122,11 +960,11 @@ graph node [ - id 6 + id 2 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1134,7 +972,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1146,6 +984,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -1157,10 +996,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -1169,7 +1008,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1192,10 +1031,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -1204,7 +1043,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1227,11 +1066,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1239,7 +1078,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1251,6 +1090,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -1262,11 +1102,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1274,7 +1114,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1286,6 +1126,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1297,11 +1139,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1321,13 +1163,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + InformationLink class " fontSize 14 fontName "Consolas" @@ -1339,11 +1175,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1363,13 +1199,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + InformationLink class " fontSize 14 fontName "Consolas" @@ -1381,11 +1211,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 110 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1405,12 +1235,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1422,11 +1248,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 124 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1446,13 +1272,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1464,11 +1285,11 @@ graph node [ - id 15 + id 11 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1488,13 +1309,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1506,7 +1322,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -1541,7 +1357,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -1576,7 +1392,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -1611,7 +1427,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -1645,8 +1461,8 @@ graph ] edge [ - source 11 - target 0 + source 7 + target 6 graphics [ fill "#000000" @@ -1654,7 +1470,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1664,8 +1480,8 @@ graph ] edge [ - source 12 - target 0 + source 8 + target 6 graphics [ fill "#000000" @@ -1673,7 +1489,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1683,8 +1499,8 @@ graph ] edge [ - source 14 - target 0 + source 7 + target 9 graphics [ fill "#000000" @@ -1692,7 +1508,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1702,8 +1518,8 @@ graph ] edge [ - source 15 - target 13 + source 8 + target 11 graphics [ fill "#000000" @@ -1711,7 +1527,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1721,8 +1537,8 @@ graph ] edge [ - source 0 - target 11 + source 5 + target 6 graphics [ fill "#000000" @@ -1731,7 +1547,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1741,8 +1557,8 @@ graph ] edge [ - source 0 - target 12 + source 5 + target 9 graphics [ fill "#000000" @@ -1751,7 +1567,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1761,8 +1577,8 @@ graph ] edge [ - source 0 - target 14 + source 5 + target 10 graphics [ fill "#000000" @@ -1771,7 +1587,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1781,8 +1597,8 @@ graph ] edge [ - source 13 - target 15 + source 5 + target 11 graphics [ fill "#000000" @@ -1791,7 +1607,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1801,17 +1617,16 @@ graph ] edge [ - source 0 - target 13 + source 9 + target 7 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eSubpackages reference EPackage" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1821,8 +1636,8 @@ graph ] edge [ - source 13 - target 0 + source 11 + target 8 graphics [ fill "#000000" @@ -1830,7 +1645,7 @@ graph ] LabelGraphics [ - text "eSuperPackage reference EPackage" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1840,16 +1655,17 @@ graph ] edge [ - source 12 - target 8 + source 6 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1859,35 +1675,17 @@ graph ] edge [ - source 11 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "instanceClassName attribute EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 10 + source 6 + target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1897,8 +1695,8 @@ graph ] edge [ - source 12 - target 8 + source 6 + target 5 graphics [ fill "#000000" @@ -1906,7 +1704,7 @@ graph ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1916,8 +1714,8 @@ graph ] edge [ - source 0 - target 10 + source 9 + target 5 graphics [ fill "#000000" @@ -1925,7 +1723,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1935,8 +1733,8 @@ graph ] edge [ - source 12 - target 10 + source 10 + target 5 graphics [ fill "#000000" @@ -1944,7 +1742,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1955,102 +1753,7 @@ graph edge [ source 11 - target 10 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsURI attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsURI attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 6 + target 5 graphics [ fill "#000000" @@ -2058,7 +1761,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2074,8 +1777,8 @@ graph id 0 graphics [ - w 254.10000000000002 - h 110 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2083,7 +1786,7 @@ graph ] LabelGraphics [ - text "o 1" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2095,12 +1798,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -2115,8 +1813,8 @@ graph id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2124,7 +1822,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2136,6 +1834,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -2150,8 +1849,8 @@ graph id 2 graphics [ - w 50.6 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2159,7 +1858,7 @@ graph ] LabelGraphics [ - text "false" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2171,6 +1870,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -2185,7 +1885,7 @@ graph id 3 graphics [ - w 24.200000000000003 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -2194,7 +1894,7 @@ graph ] LabelGraphics [ - text "-1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2220,7 +1920,7 @@ graph id 4 graphics [ - w 15.400000000000002 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -2229,7 +1929,7 @@ graph ] LabelGraphics [ - text "0" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2255,8 +1955,8 @@ graph id 5 graphics [ - w 15.400000000000002 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2264,7 +1964,7 @@ graph ] LabelGraphics [ - text "1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2276,6 +1976,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -2290,8 +1991,8 @@ graph id 6 graphics [ - w 33.0 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2299,7 +2000,7 @@ graph ] LabelGraphics [ - text ""A"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2311,6 +2012,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -2325,8 +2028,8 @@ graph id 7 graphics [ - w 33.0 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2334,7 +2037,7 @@ graph ] LabelGraphics [ - text ""B"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2346,6 +2049,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -2360,8 +2065,8 @@ graph id 8 graphics [ - w 94.60000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2369,7 +2074,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2381,6 +2086,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -2395,8 +2102,8 @@ graph id 9 graphics [ - w 68.2 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2404,7 +2111,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2416,6 +2123,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -2430,8 +2138,8 @@ graph id 10 graphics [ - w 121.00000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2439,7 +2147,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2451,6 +2159,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -2465,8 +2175,8 @@ graph id 11 graphics [ - w 269.5 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2486,12 +2196,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -2506,8 +2211,8 @@ graph id 12 graphics [ - w 269.5 - h 68 + w 112.2 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2515,7 +2220,7 @@ graph ] LabelGraphics [ - text "null" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2527,9 +2232,6 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -2544,8 +2246,8 @@ graph id 13 graphics [ - w 269.5 - h 110 + w 85.80000000000001 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2553,7 +2255,7 @@ graph ] LabelGraphics [ - text "null" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2565,12 +2267,6 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -2585,8 +2281,8 @@ graph id 14 graphics [ - w 269.5 - h 110 + w 103.4 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2594,7 +2290,7 @@ graph ] LabelGraphics [ - text "null" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2606,12 +2302,6 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -2626,8 +2316,8 @@ graph id 15 graphics [ - w 269.5 - h 68 + w 103.4 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2635,7 +2325,7 @@ graph ] LabelGraphics [ - text "null" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2647,9 +2337,6 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -2658,314 +2345,37 @@ graph borderDistance 6 ] ] - - node + edge + [ + source 9 + target 7 + graphics [ - id 16 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 17 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node - [ - id 18 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 19 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 15 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 14 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 12 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eAnnotations reference EModelElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 15 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eAnnotations reference EModelElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 11 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 13 - graphics + ] + edge + [ + source 11 + target 10 + graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2975,8 +2385,8 @@ graph ] edge [ - source 0 - target 14 + source 5 + target 6 graphics [ fill "#000000" @@ -2985,7 +2395,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2995,16 +2405,17 @@ graph ] edge [ - source 12 + source 5 target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "source attribute EAnnotation" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3014,16 +2425,17 @@ graph ] edge [ - source 11 + source 5 target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3033,16 +2445,17 @@ graph ] edge [ - source 14 + source 5 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3052,35 +2465,17 @@ graph ] edge [ - source 11 + source 7 target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 10 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3090,16 +2485,17 @@ graph ] edge [ - source 11 - target 8 + source 10 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3109,8 +2505,8 @@ graph ] edge [ - source 13 - target 9 + source 6 + target 5 graphics [ fill "#000000" @@ -3118,7 +2514,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3128,8 +2524,8 @@ graph ] edge [ - source 14 - target 8 + source 7 + target 5 graphics [ fill "#000000" @@ -3137,7 +2533,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3147,8 +2543,8 @@ graph ] edge [ - source 0 - target 9 + source 8 + target 5 graphics [ fill "#000000" @@ -3156,7 +2552,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3166,8 +2562,8 @@ graph ] edge [ - source 0 - target 8 + source 10 + target 5 graphics [ fill "#000000" @@ -3175,7 +2571,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3191,8 +2587,8 @@ graph id 0 graphics [ - w 254.10000000000002 - h 110 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3200,7 +2596,7 @@ graph ] LabelGraphics [ - text "o 1" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3212,12 +2608,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -3232,8 +2623,8 @@ graph id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3241,7 +2632,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3253,6 +2644,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -3267,8 +2659,8 @@ graph id 2 graphics [ - w 50.6 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3276,7 +2668,7 @@ graph ] LabelGraphics [ - text "false" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3288,6 +2680,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -3302,7 +2695,7 @@ graph id 3 graphics [ - w 24.200000000000003 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -3311,7 +2704,7 @@ graph ] LabelGraphics [ - text "-1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3337,7 +2730,7 @@ graph id 4 graphics [ - w 15.400000000000002 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -3346,7 +2739,7 @@ graph ] LabelGraphics [ - text "0" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3372,8 +2765,8 @@ graph id 5 graphics [ - w 15.400000000000002 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3381,7 +2774,7 @@ graph ] LabelGraphics [ - text "1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3393,6 +2786,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -3407,8 +2801,8 @@ graph id 6 graphics [ - w 33.0 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3416,7 +2810,7 @@ graph ] LabelGraphics [ - text ""A"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3428,6 +2822,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -3442,8 +2838,8 @@ graph id 7 graphics [ - w 33.0 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3451,7 +2847,7 @@ graph ] LabelGraphics [ - text ""B"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3463,6 +2859,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -3477,8 +2875,8 @@ graph id 8 graphics [ - w 94.60000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3486,7 +2884,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3498,6 +2896,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -3512,8 +2912,8 @@ graph id 9 graphics [ - w 68.2 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3521,7 +2921,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3533,6 +2933,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -3547,8 +2948,8 @@ graph id 10 graphics [ - w 121.00000000000001 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3556,7 +2957,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3568,6 +2969,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -3582,8 +2984,8 @@ graph id 11 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3603,13 +3005,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + InformationLink class " fontSize 14 fontName "Consolas" @@ -3623,166 +3019,6 @@ graph [ id 12 graphics - [ - w 269.5 - h 124 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 13 - graphics - [ - w 269.5 - h 96 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EEnumLiteral class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 14 - graphics - [ - w 269.5 - h 68 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 15 - graphics - [ - w 269.5 - h 96 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class - ENamedElement class - ETypeParameter class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 16 - graphics [ w 112.2 h 26 @@ -3816,7 +3052,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -3851,7 +3087,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -3886,7 +3122,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -3920,8 +3156,8 @@ graph ] edge [ - source 14 - target 0 + source 9 + target 6 graphics [ fill "#000000" @@ -3929,7 +3165,7 @@ graph ] LabelGraphics [ - text "eModelElement reference EAnnotation" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3939,8 +3175,8 @@ graph ] edge [ - source 11 - target 0 + source 10 + target 7 graphics [ fill "#000000" @@ -3948,7 +3184,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3958,8 +3194,8 @@ graph ] edge [ - source 12 - target 0 + source 11 + target 6 graphics [ fill "#000000" @@ -3967,7 +3203,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3977,17 +3213,16 @@ graph ] edge [ - source 12 - target 15 + source 11 + target 7 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eTypeParameters reference EClassifier" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3997,8 +3232,8 @@ graph ] edge [ - source 11 - target 13 + source 5 + target 6 graphics [ fill "#000000" @@ -4007,7 +3242,7 @@ graph ] LabelGraphics [ - text "eLiterals reference EEnum" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4017,16 +3252,17 @@ graph ] edge [ - source 13 - target 11 + source 5 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "eEnum reference EEnumLiteral" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4036,8 +3272,8 @@ graph ] edge [ - source 0 - target 14 + source 5 + target 8 graphics [ fill "#000000" @@ -4046,7 +3282,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4056,17 +3292,16 @@ graph ] edge [ - source 0 + source 7 target 11 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4076,8 +3311,8 @@ graph ] edge [ - source 0 - target 12 + source 6 + target 11 graphics [ fill "#000000" @@ -4086,7 +3321,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4096,16 +3331,17 @@ graph ] edge [ - source 14 - target 10 + source 6 + target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "source attribute EAnnotation" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4115,16 +3351,17 @@ graph ] edge [ - source 11 - target 8 + source 7 + target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4134,8 +3371,8 @@ graph ] edge [ - source 12 - target 9 + source 6 + target 5 graphics [ fill "#000000" @@ -4143,7 +3380,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4153,8 +3390,8 @@ graph ] edge [ - source 11 - target 9 + source 7 + target 5 graphics [ fill "#000000" @@ -4162,7 +3399,7 @@ graph ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4172,8 +3409,8 @@ graph ] edge [ - source 12 - target 9 + source 8 + target 5 graphics [ fill "#000000" @@ -4181,7 +3418,7 @@ graph ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4189,190 +3426,52 @@ graph position "thead" ] ] - edge - [ - source 11 - target 2 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics +] +graph +[ + node [ - text "serializable attribute EDataType" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] - edge - [ - source 12 - target 2 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "serializable attribute EDataType" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "literal attribute EEnumLiteral" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 10 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 10 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsURI attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 254.10000000000002 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node + + node [ id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4380,7 +3479,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4392,6 +3491,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -4406,8 +3506,8 @@ graph id 2 graphics [ - w 50.6 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4415,7 +3515,7 @@ graph ] LabelGraphics [ - text "false" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4427,6 +3527,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -4441,7 +3542,7 @@ graph id 3 graphics [ - w 24.200000000000003 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -4450,7 +3551,7 @@ graph ] LabelGraphics [ - text "-1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4476,7 +3577,7 @@ graph id 4 graphics [ - w 15.400000000000002 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -4485,7 +3586,7 @@ graph ] LabelGraphics [ - text "0" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4511,8 +3612,8 @@ graph id 5 graphics [ - w 15.400000000000002 - h 26 + w 269.5 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4520,7 +3621,7 @@ graph ] LabelGraphics [ - text "1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4532,6 +3633,7 @@ graph LabelGraphics [ text " + FunctionalArchitectureModel class " fontSize 14 fontName "Consolas" @@ -4546,8 +3648,8 @@ graph id 6 graphics [ - w 33.0 - h 26 + w 192.50000000000003 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4555,7 +3657,7 @@ graph ] LabelGraphics [ - text ""A"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4567,6 +3669,8 @@ graph LabelGraphics [ text " + FunctionalElement class + Function class " fontSize 14 fontName "Consolas" @@ -4581,8 +3685,8 @@ graph id 7 graphics [ - w 33.0 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4590,7 +3694,7 @@ graph ] LabelGraphics [ - text ""B"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4602,6 +3706,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -4616,8 +3721,8 @@ graph id 8 graphics [ - w 94.60000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4625,7 +3730,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4637,6 +3742,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -4651,8 +3758,8 @@ graph id 9 graphics [ - w 68.2 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4660,7 +3767,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4672,6 +3779,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -4686,8 +3794,8 @@ graph id 10 graphics [ - w 121.00000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4695,7 +3803,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4707,6 +3815,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -4721,8 +3831,8 @@ graph id 11 graphics [ - w 269.5 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4742,12 +3852,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -4762,8 +3867,8 @@ graph id 12 graphics [ - w 269.5 - h 110 + w 112.2 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4771,7 +3876,7 @@ graph ] LabelGraphics [ - text "null" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4783,12 +3888,6 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart " fontSize 14 fontName "Consolas" @@ -4803,8 +3902,8 @@ graph id 13 graphics [ - w 269.5 - h 124 + w 85.80000000000001 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4812,7 +3911,7 @@ graph ] LabelGraphics [ - text "null" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4824,13 +3923,6 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -4845,8 +3937,8 @@ graph id 14 graphics [ - w 269.5 - h 96 + w 103.4 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4854,7 +3946,7 @@ graph ] LabelGraphics [ - text "null" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4866,11 +3958,6 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - ETypeParameter class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -4885,8 +3972,8 @@ graph id 15 graphics [ - w 269.5 - h 68 + w 103.4 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4894,7 +3981,7 @@ graph ] LabelGraphics [ - text "null" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4906,9 +3993,6 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -4917,158 +4001,19 @@ graph borderDistance 6 ] ] - - node + edge + [ + source 6 + target 7 + graphics [ - id 16 - graphics - [ - w 112.2 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Integers" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + width 3 + targetArrow "standard" ] - - node + LabelGraphics [ - id 17 - graphics - [ - w 85.80000000000001 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Reals" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 18 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Strings" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 19 - graphics - [ - w 103.4 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 15 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" + text "interface reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5078,8 +4023,8 @@ graph ] edge [ - source 11 - target 0 + source 6 + target 5 graphics [ fill "#000000" @@ -5087,7 +4032,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "model reference FunctionalElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5097,16 +4042,17 @@ graph ] edge [ - source 13 - target 0 + source 5 + target 6 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "ePackage reference EClassifier" + text "rootElements reference FunctionalArchitectureModel" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5116,17 +4062,16 @@ graph ] edge [ - source 13 - target 14 + source 9 + target 8 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eTypeParameters reference EClassifier" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5136,17 +4081,16 @@ graph ] edge [ - source 0 - target 15 + source 11 + target 10 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5156,8 +4100,8 @@ graph ] edge [ - source 0 - target 11 + source 7 + target 8 graphics [ fill "#000000" @@ -5166,7 +4110,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5176,8 +4120,8 @@ graph ] edge [ - source 0 - target 13 + source 7 + target 10 graphics [ fill "#000000" @@ -5186,7 +4130,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5196,17 +4140,16 @@ graph ] edge [ - source 0 - target 12 + source 7 + target 6 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eSubpackages reference EPackage" + text "element reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5216,16 +4159,17 @@ graph ] edge [ - source 12 - target 0 + source 8 + target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "eSuperPackage reference EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5235,16 +4179,17 @@ graph ] edge [ - source 15 - target 6 + source 10 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "source attribute EAnnotation" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5254,8 +4199,8 @@ graph ] edge [ - source 11 - target 6 + source 8 + target 7 graphics [ fill "#000000" @@ -5263,7 +4208,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5273,7 +4218,7 @@ graph ] edge [ - source 13 + source 10 target 7 graphics [ @@ -5282,7 +4227,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5292,8 +4237,8 @@ graph ] edge [ - source 11 - target 1 + source 6 + target 2 graphics [ fill "#000000" @@ -5301,7 +4246,7 @@ graph ] LabelGraphics [ - text "serializable attribute EDataType" + text "type attribute Function" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -5309,130 +4254,2035 @@ graph position "thead" ] ] - edge - [ - source 0 - target 10 - graphics +] +graph +[ + node [ - fill "#000000" - targetArrow "standard" + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] - edge - [ - source 12 - target 6 - graphics + + node [ - fill "#000000" - targetArrow "standard" + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] edge [ - source 0 + source 7 target 9 graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics [ fill "#000000" targetArrow "standard" ] - LabelGraphics + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node [ - text "nsURI attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] - edge - [ - source 12 - target 10 - graphics + + node [ - fill "#000000" - targetArrow "standard" + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "nsURI attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] - edge - [ - source 0 - target 8 - graphics + + node [ - fill "#000000" - targetArrow "standard" + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] - edge - [ - source 12 - target 8 - graphics + + node [ - fill "#000000" - targetArrow "standard" + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] -] -graph -[ + node [ - id 0 + id 10 graphics [ - w 254.10000000000002 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5440,7 +6290,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5452,12 +6302,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -5469,11 +6314,11 @@ graph node [ - id 1 + id 11 graphics [ - w 41.800000000000004 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5481,7 +6326,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5493,6 +6338,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -5504,10 +6351,10 @@ graph node [ - id 2 + id 12 graphics [ - w 50.6 + w 112.2 h 26 type "rectangle" fill "#FFFFFF" @@ -5516,7 +6363,7 @@ graph ] LabelGraphics [ - text "false" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5539,10 +6386,10 @@ graph node [ - id 3 + id 13 graphics [ - w 24.200000000000003 + w 85.80000000000001 h 26 type "rectangle" fill "#FFFFFF" @@ -5551,7 +6398,7 @@ graph ] LabelGraphics [ - text "-1" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5574,10 +6421,10 @@ graph node [ - id 4 + id 14 graphics [ - w 15.400000000000002 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -5586,7 +6433,7 @@ graph ] LabelGraphics [ - text "0" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5609,10 +6456,10 @@ graph node [ - id 5 + id 15 graphics [ - w 15.400000000000002 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -5621,7 +6468,7 @@ graph ] LabelGraphics [ - text "1" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5641,14 +6488,250 @@ graph borderDistance 6 ] ] - + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 6 + id 0 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5656,7 +6739,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5668,6 +6751,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -5679,11 +6763,11 @@ graph node [ - id 7 + id 1 graphics [ - w 33.0 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5691,7 +6775,7 @@ graph ] LabelGraphics [ - text ""B"" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5703,6 +6787,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -5714,11 +6799,11 @@ graph node [ - id 8 + id 2 graphics [ - w 94.60000000000001 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5726,7 +6811,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5738,6 +6823,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -5749,10 +6835,10 @@ graph node [ - id 9 + id 3 graphics [ - w 68.2 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -5761,7 +6847,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5784,10 +6870,10 @@ graph node [ - id 10 + id 4 graphics [ - w 121.00000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -5796,7 +6882,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -5819,11 +6905,11 @@ graph node [ - id 11 + id 5 graphics [ - w 269.5 - h 110 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5843,12 +6929,7 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -5860,11 +6941,11 @@ graph node [ - id 12 + id 6 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5884,12 +6965,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -5901,11 +6978,11 @@ graph node [ - id 13 + id 7 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5925,12 +7002,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -5942,11 +7015,11 @@ graph node [ - id 14 + id 8 graphics [ - w 269.5 - h 96 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -5966,11 +7039,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - ETypeParameter class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -5982,11 +7052,11 @@ graph node [ - id 15 + id 9 graphics [ - w 269.5 - h 110 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6006,12 +7076,8 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -6023,11 +7089,11 @@ graph node [ - id 16 + id 10 graphics [ - w 112.2 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6035,7 +7101,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6047,6 +7113,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -6058,11 +7126,11 @@ graph node [ - id 17 + id 11 graphics [ - w 85.80000000000001 - h 26 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6070,7 +7138,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6082,6 +7150,7 @@ graph LabelGraphics [ text " + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -6093,10 +7162,10 @@ graph node [ - id 18 + id 12 graphics [ - w 103.4 + w 112.2 h 26 type "rectangle" fill "#FFFFFF" @@ -6105,7 +7174,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6128,10 +7197,10 @@ graph node [ - id 19 + id 13 graphics [ - w 103.4 + w 85.80000000000001 h 26 type "rectangle" fill "#FFFFFF" @@ -6140,206 +7209,100 @@ graph ] LabelGraphics [ - text "New Objects" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 fontName "Monospace" autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 15 - target 13 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 14 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eTypeParameters reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 11 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 15 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 12 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eSubpackages reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 13 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eSubpackages reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eSuperPackage reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] - edge - [ - source 13 - target 12 - graphics + + node [ - fill "#000000" - targetArrow "standard" + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "eSuperPackage reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] edge [ source 11 - target 1 + target 6 graphics [ fill "#000000" @@ -6347,7 +7310,7 @@ graph ] LabelGraphics [ - text "abstract attribute EClass" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6357,16 +7320,17 @@ graph ] edge [ - source 11 - target 2 + source 5 + target 6 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "interface attribute EClass" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6376,16 +7340,17 @@ graph ] edge [ - source 11 - target 8 + source 5 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6395,16 +7360,17 @@ graph ] edge [ - source 15 - target 6 + source 5 + target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6414,16 +7380,17 @@ graph ] edge [ - source 0 - target 10 + source 5 + target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6433,16 +7400,17 @@ graph ] edge [ - source 13 - target 8 + source 5 + target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6452,16 +7420,17 @@ graph ] edge [ - source 11 - target 6 + source 6 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6471,8 +7440,8 @@ graph ] edge [ - source 0 - target 9 + source 6 + target 5 graphics [ fill "#000000" @@ -6480,7 +7449,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6490,8 +7459,8 @@ graph ] edge [ - source 13 - target 7 + source 7 + target 5 graphics [ fill "#000000" @@ -6499,7 +7468,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6509,8 +7478,8 @@ graph ] edge [ - source 12 - target 7 + source 8 + target 5 graphics [ fill "#000000" @@ -6518,7 +7487,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6528,8 +7497,8 @@ graph ] edge [ - source 0 - target 8 + source 9 + target 5 graphics [ fill "#000000" @@ -6537,7 +7506,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -6545,162 +7514,35 @@ graph position "thead" ] ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 254.10000000000002 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" ] - + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 4 + id 0 graphics [ - w 15.400000000000002 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6708,7 +7550,7 @@ graph ] LabelGraphics [ - text "0" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6720,6 +7562,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -6731,11 +7574,11 @@ graph node [ - id 5 + id 1 graphics [ - w 15.400000000000002 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6743,7 +7586,7 @@ graph ] LabelGraphics [ - text "1" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6755,6 +7598,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -6766,11 +7610,11 @@ graph node [ - id 6 + id 2 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6778,7 +7622,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6790,6 +7634,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -6801,10 +7646,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -6813,7 +7658,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6836,10 +7681,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -6848,7 +7693,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6871,11 +7716,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6883,7 +7728,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6895,6 +7740,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -6906,11 +7752,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6918,7 +7764,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -6930,6 +7776,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -6941,11 +7789,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -6965,12 +7813,8 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -6982,11 +7826,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7006,12 +7850,8 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -7023,11 +7863,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7047,12 +7887,7 @@ graph LabelGraphics [ text " - EModelElement class - ENamedElement class - EOperation class - ETypedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -7064,11 +7899,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 68 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -7088,9 +7923,7 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -7102,10 +7935,10 @@ graph node [ - id 15 + id 11 graphics [ - w 238.70000000000002 + w 161.70000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -7126,7 +7959,7 @@ graph LabelGraphics [ text " - EStringToStringMapEntry class + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -7138,7 +7971,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -7173,7 +8006,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -7208,7 +8041,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -7243,7 +8076,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -7277,75 +8110,16 @@ graph ] edge [ - source 14 - target 15 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "details reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 14 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 11 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eSuperTypes reference EClass" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 13 + source 9 + target 6 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eOperations reference EClass" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7355,8 +8129,8 @@ graph ] edge [ - source 11 - target 11 + source 10 + target 7 graphics [ fill "#000000" @@ -7364,7 +8138,7 @@ graph ] LabelGraphics [ - text "eAllSuperTypes reference EClass" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7375,46 +8149,7 @@ graph edge [ source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 14 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "eAnnotations reference EModelElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 11 + target 8 graphics [ fill "#000000" @@ -7422,7 +8157,7 @@ graph ] LabelGraphics [ - text "eContainingClass reference EOperation" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7432,8 +8167,8 @@ graph ] edge [ - source 0 - target 11 + source 5 + target 6 graphics [ fill "#000000" @@ -7442,7 +8177,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7452,8 +8187,8 @@ graph ] edge [ - source 0 - target 12 + source 5 + target 7 graphics [ fill "#000000" @@ -7462,26 +8197,7 @@ graph ] LabelGraphics [ - text "eSubpackages reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eSuperPackage reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7491,16 +8207,17 @@ graph ] edge [ - source 11 + source 5 target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7510,16 +8227,17 @@ graph ] edge [ - source 11 + source 6 target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7529,73 +8247,17 @@ graph ] edge [ - source 0 + source 7 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 7 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 9 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsURI attribute EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7605,16 +8267,17 @@ graph ] edge [ - source 12 - target 8 + source 8 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "nsURI attribute EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7624,8 +8287,8 @@ graph ] edge [ - source 0 - target 8 + source 6 + target 5 graphics [ fill "#000000" @@ -7633,7 +8296,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7643,8 +8306,8 @@ graph ] edge [ - source 13 - target 1 + source 7 + target 5 graphics [ fill "#000000" @@ -7652,7 +8315,7 @@ graph ] LabelGraphics [ - text "unique attribute ETypedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -7662,8 +8325,8 @@ graph ] edge [ - source 13 - target 4 + source 8 + target 5 graphics [ fill "#000000" @@ -7671,7 +8334,7 @@ graph ] LabelGraphics [ - text "upperBound attribute ETypedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png index bfe18c4e..5df81bb3 100644 Binary files a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi index 45634c72..b4259573 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi @@ -1,10 +1,12 @@ - - -
- - - - - - + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml index a44b2785..2dd09497 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml @@ -5,8 +5,8 @@ graph id 0 graphics [ - w 254.10000000000002 - h 110 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -14,7 +14,7 @@ graph ] LabelGraphics [ - text "o 1" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -26,12 +26,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -46,8 +41,8 @@ graph id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -55,7 +50,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -67,6 +62,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -81,8 +77,8 @@ graph id 2 graphics [ - w 50.6 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -90,7 +86,7 @@ graph ] LabelGraphics [ - text "false" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -102,6 +98,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -116,7 +113,7 @@ graph id 3 graphics [ - w 24.200000000000003 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -125,7 +122,7 @@ graph ] LabelGraphics [ - text "-1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -151,7 +148,7 @@ graph id 4 graphics [ - w 15.400000000000002 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -160,7 +157,7 @@ graph ] LabelGraphics [ - text "0" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -186,8 +183,8 @@ graph id 5 graphics [ - w 15.400000000000002 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -195,7 +192,7 @@ graph ] LabelGraphics [ - text "1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -207,6 +204,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -221,8 +219,8 @@ graph id 6 graphics [ - w 33.0 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -230,7 +228,7 @@ graph ] LabelGraphics [ - text ""A"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -242,6 +240,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -256,8 +256,8 @@ graph id 7 graphics [ - w 33.0 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -265,7 +265,7 @@ graph ] LabelGraphics [ - text ""B"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -277,6 +277,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -291,8 +293,8 @@ graph id 8 graphics [ - w 94.60000000000001 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -300,7 +302,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -312,6 +314,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -326,8 +330,8 @@ graph id 9 graphics [ - w 68.2 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -335,7 +339,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -347,6 +351,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -361,8 +366,8 @@ graph id 10 graphics [ - w 121.00000000000001 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -370,7 +375,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -382,6 +387,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -396,8 +402,8 @@ graph id 11 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -417,13 +423,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + InformationLink class " fontSize 14 fontName "Consolas" @@ -437,173 +437,6 @@ graph [ id 12 graphics - [ - w 269.5 - h 124 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 13 - graphics - [ - w 269.5 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 14 - graphics - [ - w 269.5 - h 124 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 15 - graphics - [ - w 269.5 - h 124 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 16 - graphics [ w 112.2 h 26 @@ -637,7 +470,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -672,7 +505,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -707,7 +540,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -741,8 +574,8 @@ graph ] edge [ - source 11 - target 0 + source 9 + target 7 graphics [ fill "#000000" @@ -750,7 +583,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -760,8 +593,8 @@ graph ] edge [ - source 12 - target 0 + source 10 + target 7 graphics [ fill "#000000" @@ -769,7 +602,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -779,8 +612,8 @@ graph ] edge [ - source 14 - target 0 + source 11 + target 6 graphics [ fill "#000000" @@ -788,7 +621,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -798,8 +631,8 @@ graph ] edge [ - source 15 - target 13 + source 9 + target 8 graphics [ fill "#000000" @@ -807,7 +640,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -817,17 +650,16 @@ graph ] edge [ - source 0 - target 11 + source 11 + target 8 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -837,17 +669,16 @@ graph ] edge [ - source 0 - target 12 + source 10 + target 8 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -857,8 +688,8 @@ graph ] edge [ - source 0 - target 14 + source 5 + target 6 graphics [ fill "#000000" @@ -867,7 +698,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -877,8 +708,8 @@ graph ] edge [ - source 13 - target 15 + source 5 + target 7 graphics [ fill "#000000" @@ -887,7 +718,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -897,8 +728,8 @@ graph ] edge [ - source 0 - target 13 + source 5 + target 8 graphics [ fill "#000000" @@ -907,26 +738,7 @@ graph ] LabelGraphics [ - text "eSubpackages reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eSuperPackage reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -936,8 +748,8 @@ graph ] edge [ - source 12 - target 8 + source 8 + target 9 graphics [ fill "#000000" @@ -945,7 +757,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -955,8 +767,8 @@ graph ] edge [ - source 11 - target 6 + source 8 + target 11 graphics [ fill "#000000" @@ -964,7 +776,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -974,7 +786,7 @@ graph ] edge [ - source 11 + source 8 target 10 graphics [ @@ -983,7 +795,7 @@ graph ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -993,16 +805,17 @@ graph ] edge [ - source 12 - target 8 + source 7 + target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1012,16 +825,17 @@ graph ] edge [ - source 0 + source 7 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1031,16 +845,17 @@ graph ] edge [ - source 12 - target 10 + source 6 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1050,8 +865,8 @@ graph ] edge [ - source 11 - target 10 + source 6 + target 5 graphics [ fill "#000000" @@ -1059,7 +874,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1069,8 +884,8 @@ graph ] edge [ - source 13 - target 6 + source 7 + target 5 graphics [ fill "#000000" @@ -1078,7 +893,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1088,8 +903,8 @@ graph ] edge [ - source 14 - target 10 + source 8 + target 5 graphics [ fill "#000000" @@ -1097,7 +912,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1105,92 +920,267 @@ graph position "thead" ] ] - edge - [ - source 0 - target 9 - graphics +] +graph +[ + node [ - fill "#000000" - targetArrow "standard" + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "nsURI attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "nsURI attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] - edge - [ - source 0 - target 8 - graphics + + node [ - fill "#000000" - targetArrow "standard" + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] - edge - [ - source 13 - target 6 - graphics + + node [ - fill "#000000" - targetArrow "standard" + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] -] -graph -[ + node [ - id 0 + id 7 graphics [ - w 254.10000000000002 - h 110 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1198,7 +1188,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1210,12 +1200,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + InformationLink class " fontSize 14 fontName "Consolas" @@ -1227,11 +1212,11 @@ graph node [ - id 1 + id 8 graphics [ - w 41.800000000000004 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1239,7 +1224,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1251,6 +1236,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -1262,11 +1248,11 @@ graph node [ - id 2 + id 9 graphics [ - w 50.6 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1274,7 +1260,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1286,6 +1272,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1294,49 +1282,6308 @@ graph borderDistance 6 ] ] - - node + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 2 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics [ - id 3 - graphics - [ - w 24.200000000000003 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "-1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 4 + id 0 graphics [ - w 15.400000000000002 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1344,7 +7591,7 @@ graph ] LabelGraphics [ - text "0" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1356,6 +7603,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -1367,11 +7615,11 @@ graph node [ - id 5 + id 1 graphics [ - w 15.400000000000002 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1379,7 +7627,7 @@ graph ] LabelGraphics [ - text "1" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1391,6 +7639,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -1402,11 +7651,11 @@ graph node [ - id 6 + id 2 graphics [ - w 33.0 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1414,7 +7663,7 @@ graph ] LabelGraphics [ - text ""A"" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1426,6 +7675,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -1437,10 +7687,10 @@ graph node [ - id 7 + id 3 graphics [ - w 33.0 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -1449,7 +7699,7 @@ graph ] LabelGraphics [ - text ""B"" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1472,10 +7722,10 @@ graph node [ - id 8 + id 4 graphics [ - w 94.60000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -1484,7 +7734,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1507,11 +7757,11 @@ graph node [ - id 9 + id 5 graphics [ - w 68.2 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1519,7 +7769,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1531,6 +7781,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -1542,11 +7793,11 @@ graph node [ - id 10 + id 6 graphics [ - w 121.00000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1554,7 +7805,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1566,6 +7817,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1577,11 +7830,11 @@ graph node [ - id 11 + id 7 graphics [ - w 269.5 - h 110 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1601,12 +7854,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1618,11 +7867,11 @@ graph node [ - id 12 + id 8 graphics [ - w 269.5 - h 68 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1642,9 +7891,8 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1656,11 +7904,11 @@ graph node [ - id 13 + id 9 graphics [ - w 269.5 - h 110 + w 161.70000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1680,12 +7928,7 @@ graph LabelGraphics [ text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FAMTerminator class " fontSize 14 fontName "Consolas" @@ -1697,11 +7940,11 @@ graph node [ - id 14 + id 10 graphics [ - w 269.5 - h 110 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1721,12 +7964,8 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1738,11 +7977,11 @@ graph node [ - id 15 + id 11 graphics [ - w 269.5 - h 68 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1762,9 +8001,7 @@ graph LabelGraphics [ text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart + InformationLink class " fontSize 14 fontName "Consolas" @@ -1776,7 +8013,7 @@ graph node [ - id 16 + id 12 graphics [ w 112.2 @@ -1811,7 +8048,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -1846,7 +8083,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -1881,7 +8118,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -1915,27 +8152,8 @@ graph ] edge [ - source 12 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eModelElement reference EAnnotation" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 15 - target 0 + source 9 + target 6 graphics [ fill "#000000" @@ -1943,7 +8161,7 @@ graph ] LabelGraphics [ - text "eModelElement reference EAnnotation" + text "data reference FAMTerminator" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1954,45 +8172,7 @@ graph edge [ source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 14 - target 0 + target 8 graphics [ fill "#000000" @@ -2000,7 +8180,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2010,17 +8190,16 @@ graph ] edge [ - source 0 - target 12 + source 11 + target 10 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2030,8 +8209,8 @@ graph ] edge [ - source 0 - target 15 + source 5 + target 6 graphics [ fill "#000000" @@ -2040,7 +8219,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2050,8 +8229,8 @@ graph ] edge [ - source 0 - target 11 + source 5 + target 7 graphics [ fill "#000000" @@ -2060,7 +8239,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2070,8 +8249,8 @@ graph ] edge [ - source 0 - target 13 + source 5 + target 8 graphics [ fill "#000000" @@ -2080,7 +8259,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2090,8 +8269,8 @@ graph ] edge [ - source 0 - target 14 + source 5 + target 10 graphics [ fill "#000000" @@ -2100,26 +8279,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 7 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "source attribute EAnnotation" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2129,8 +8289,8 @@ graph ] edge [ - source 11 - target 8 + source 10 + target 11 graphics [ fill "#000000" @@ -2138,7 +8298,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2148,16 +8308,17 @@ graph ] edge [ - source 14 - target 10 + source 8 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2167,73 +8328,17 @@ graph ] edge [ - source 11 + source 6 target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 2 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "serializable attribute EDataType" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 10 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 11 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "name attribute ENamedElement" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2243,8 +8348,8 @@ graph ] edge [ - source 13 - target 9 + source 6 + target 5 graphics [ fill "#000000" @@ -2252,7 +8357,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2262,8 +8367,8 @@ graph ] edge [ - source 14 - target 8 + source 7 + target 5 graphics [ fill "#000000" @@ -2271,7 +8376,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2281,8 +8386,8 @@ graph ] edge [ - source 0 - target 9 + source 8 + target 5 graphics [ fill "#000000" @@ -2290,7 +8395,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2300,8 +8405,8 @@ graph ] edge [ - source 0 - target 8 + source 10 + target 5 graphics [ fill "#000000" @@ -2309,7 +8414,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png index a47da297..5a2af8ba 100644 Binary files a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi index 8bff1dc6..4ca54850 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi @@ -1,8 +1,11 @@ - - - - - - - + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml index e5647b66..3a9035a7 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml @@ -5,8 +5,8 @@ graph id 0 graphics [ - w 254.10000000000002 - h 110 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -14,7 +14,7 @@ graph ] LabelGraphics [ - text "o 1" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -26,12 +26,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -46,8 +41,8 @@ graph id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -55,7 +50,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -67,6 +62,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -81,8 +77,8 @@ graph id 2 graphics [ - w 50.6 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -90,7 +86,7 @@ graph ] LabelGraphics [ - text "false" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -102,6 +98,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -116,7 +113,7 @@ graph id 3 graphics [ - w 24.200000000000003 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -125,7 +122,7 @@ graph ] LabelGraphics [ - text "-1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -151,7 +148,7 @@ graph id 4 graphics [ - w 15.400000000000002 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -160,7 +157,7 @@ graph ] LabelGraphics [ - text "0" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -186,8 +183,8 @@ graph id 5 graphics [ - w 15.400000000000002 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -195,7 +192,7 @@ graph ] LabelGraphics [ - text "1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -207,6 +204,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -221,8 +219,8 @@ graph id 6 graphics [ - w 33.0 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -230,7 +228,7 @@ graph ] LabelGraphics [ - text ""A"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -242,6 +240,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -256,8 +256,8 @@ graph id 7 graphics [ - w 33.0 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -265,7 +265,7 @@ graph ] LabelGraphics [ - text ""B"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -277,6 +277,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -291,8 +293,8 @@ graph id 8 graphics [ - w 94.60000000000001 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -300,7 +302,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -312,6 +314,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -326,8 +330,8 @@ graph id 9 graphics [ - w 68.2 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -335,7 +339,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -347,6 +351,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -361,8 +366,8 @@ graph id 10 graphics [ - w 121.00000000000001 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -370,7 +375,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -382,6 +387,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -396,8 +402,8 @@ graph id 11 graphics [ - w 269.5 - h 124 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -417,13 +423,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + InformationLink class " fontSize 14 fontName "Consolas" @@ -437,173 +437,6 @@ graph [ id 12 graphics - [ - w 269.5 - h 124 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 13 - graphics - [ - w 269.5 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EModelElement class - ENamedElement class - EPackage class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - EPackage class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 14 - graphics - [ - w 269.5 - h 124 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 15 - graphics - [ - w 269.5 - h 124 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClassifier class - EDataType class - EEnum class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 16 - graphics [ w 112.2 h 26 @@ -637,7 +470,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -672,7 +505,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -707,7 +540,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -741,27 +574,8 @@ graph ] edge [ - source 11 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "ePackage reference EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 0 + source 9 + target 7 graphics [ fill "#000000" @@ -769,7 +583,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -779,8 +593,8 @@ graph ] edge [ - source 14 - target 0 + source 10 + target 7 graphics [ fill "#000000" @@ -788,7 +602,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -798,8 +612,8 @@ graph ] edge [ - source 15 - target 13 + source 11 + target 7 graphics [ fill "#000000" @@ -807,7 +621,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -817,17 +631,16 @@ graph ] edge [ - source 0 - target 11 + source 9 + target 8 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -837,17 +650,16 @@ graph ] edge [ - source 0 - target 12 + source 10 + target 8 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -857,17 +669,16 @@ graph ] edge [ - source 0 - target 14 + source 11 + target 8 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -877,8 +688,8 @@ graph ] edge [ - source 13 - target 15 + source 5 + target 6 graphics [ fill "#000000" @@ -887,7 +698,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -897,8 +708,8 @@ graph ] edge [ - source 0 - target 13 + source 5 + target 7 graphics [ fill "#000000" @@ -907,26 +718,7 @@ graph ] LabelGraphics [ - text "eSubpackages reference EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 0 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "eSuperPackage reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -936,16 +728,17 @@ graph ] edge [ - source 12 + source 5 target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -955,8 +748,8 @@ graph ] edge [ - source 11 - target 6 + source 8 + target 9 graphics [ fill "#000000" @@ -964,7 +757,7 @@ graph ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -974,7 +767,7 @@ graph ] edge [ - source 11 + source 8 target 10 graphics [ @@ -983,26 +776,7 @@ graph ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 12 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "instanceTypeName attribute EClassifier" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1012,8 +786,8 @@ graph ] edge [ - source 11 - target 1 + source 8 + target 11 graphics [ fill "#000000" @@ -1021,7 +795,7 @@ graph ] LabelGraphics [ - text "serializable attribute EDataType" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1031,16 +805,17 @@ graph ] edge [ - source 0 - target 10 + source 7 + target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1050,16 +825,17 @@ graph ] edge [ - source 12 + source 7 target 10 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1069,16 +845,17 @@ graph ] edge [ - source 11 - target 10 + source 7 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1088,8 +865,8 @@ graph ] edge [ - source 13 - target 6 + source 6 + target 5 graphics [ fill "#000000" @@ -1097,7 +874,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1107,8 +884,8 @@ graph ] edge [ - source 14 - target 10 + source 7 + target 5 graphics [ fill "#000000" @@ -1116,7 +893,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1126,8 +903,8 @@ graph ] edge [ - source 0 - target 9 + source 8 + target 5 graphics [ fill "#000000" @@ -1135,7 +912,7 @@ graph ] LabelGraphics [ - text "nsURI attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1143,73 +920,16 @@ graph position "thead" ] ] - edge - [ - source 13 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsURI attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 8 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 13 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "nsPrefix attribute EPackage" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node +] +graph +[ + node [ id 0 graphics [ - w 254.10000000000002 - h 110 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1217,7 +937,7 @@ graph ] LabelGraphics [ - text "o 1" + text "Root literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1229,12 +949,7 @@ graph LabelGraphics [ text " - EModelElement class DefinedPart - ENamedElement class DefinedPart - EPackage class DefinedPart - EModelElement class - ENamedElement class - EPackage class + FunctionType enum " fontSize 14 fontName "Consolas" @@ -1249,8 +964,8 @@ graph id 1 graphics [ - w 41.800000000000004 - h 26 + w 297.0 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1258,7 +973,7 @@ graph ] LabelGraphics [ - text "true" + text "Intermediate literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1270,6 +985,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -1284,8 +1000,8 @@ graph id 2 graphics [ - w 50.6 - h 26 + w 226.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1293,7 +1009,7 @@ graph ] LabelGraphics [ - text "false" + text "Leaf literal FunctionType" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1305,6 +1021,7 @@ graph LabelGraphics [ text " + FunctionType enum " fontSize 14 fontName "Consolas" @@ -1319,7 +1036,7 @@ graph id 3 graphics [ - w 24.200000000000003 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -1328,7 +1045,7 @@ graph ] LabelGraphics [ - text "-1" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1354,7 +1071,7 @@ graph id 4 graphics [ - w 15.400000000000002 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -1363,7 +1080,7 @@ graph ] LabelGraphics [ - text "0" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1389,8 +1106,8 @@ graph id 5 graphics [ - w 15.400000000000002 - h 26 + w 207.9 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1398,7 +1115,7 @@ graph ] LabelGraphics [ - text "1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1410,6 +1127,7 @@ graph LabelGraphics [ text " + FunctionalInterface class " fontSize 14 fontName "Consolas" @@ -1424,8 +1142,8 @@ graph id 6 graphics [ - w 33.0 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1433,7 +1151,7 @@ graph ] LabelGraphics [ - text ""A"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1445,6 +1163,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1459,8 +1179,8 @@ graph id 7 graphics [ - w 33.0 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1468,7 +1188,7 @@ graph ] LabelGraphics [ - text ""B"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1480,6 +1200,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -1494,8 +1215,8 @@ graph id 8 graphics [ - w 94.60000000000001 - h 26 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1503,7 +1224,7 @@ graph ] LabelGraphics [ - text ""nsPrefix"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1515,6 +1236,7 @@ graph LabelGraphics [ text " + InformationLink class " fontSize 14 fontName "Consolas" @@ -1529,8 +1251,8 @@ graph id 9 graphics [ - w 68.2 - h 26 + w 177.10000000000002 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1538,7 +1260,7 @@ graph ] LabelGraphics [ - text ""nsUri"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1550,6 +1272,8 @@ graph LabelGraphics [ text " + FunctionalInput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1564,8 +1288,8 @@ graph id 10 graphics [ - w 121.00000000000001 - h 26 + w 184.8 + h 54 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1573,7 +1297,7 @@ graph ] LabelGraphics [ - text ""packageName"" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1585,6 +1309,8 @@ graph LabelGraphics [ text " + FunctionalOutput class + FunctionalData class " fontSize 14 fontName "Consolas" @@ -1599,8 +1325,8 @@ graph id 11 graphics [ - w 269.5 - h 110 + w 177.10000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1620,12 +1346,7 @@ graph LabelGraphics [ text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart + InformationLink class " fontSize 14 fontName "Consolas" @@ -1639,164 +1360,6 @@ graph [ id 12 graphics - [ - w 269.5 - h 68 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 13 - graphics - [ - w 269.5 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClass class - EClassifier class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 14 - graphics - [ - w 269.5 - h 110 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EClassifier class - EDataType class - EModelElement class - ENamedElement class - EModelElement class UndefinedPart - ENamedElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 15 - graphics - [ - w 269.5 - h 68 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - EAnnotation class - EModelElement class - EModelElement class UndefinedPart - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 16 - graphics [ w 112.2 h 26 @@ -1830,7 +1393,7 @@ graph node [ - id 17 + id 13 graphics [ w 85.80000000000001 @@ -1865,7 +1428,7 @@ graph node [ - id 18 + id 14 graphics [ w 103.4 @@ -1900,7 +1463,7 @@ graph node [ - id 19 + id 15 graphics [ w 103.4 @@ -1934,8 +1497,8 @@ graph ] edge [ - source 12 - target 0 + source 7 + target 6 graphics [ fill "#000000" @@ -1943,7 +1506,7 @@ graph ] LabelGraphics [ - text "eModelElement reference EAnnotation" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1953,8 +1516,8 @@ graph ] edge [ - source 15 - target 0 + source 8 + target 6 graphics [ fill "#000000" @@ -1962,7 +1525,7 @@ graph ] LabelGraphics [ - text "eModelElement reference EAnnotation" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1973,7 +1536,7 @@ graph edge [ source 11 - target 0 + target 10 graphics [ fill "#000000" @@ -1981,7 +1544,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "from reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -1991,8 +1554,8 @@ graph ] edge [ - source 13 - target 0 + source 7 + target 9 graphics [ fill "#000000" @@ -2000,7 +1563,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2010,8 +1573,8 @@ graph ] edge [ - source 14 - target 0 + source 8 + target 9 graphics [ fill "#000000" @@ -2019,7 +1582,7 @@ graph ] LabelGraphics [ - text "ePackage reference EClassifier" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2029,17 +1592,16 @@ graph ] edge [ - source 0 - target 12 + source 11 + target 9 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "to reference InformationLink" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2049,8 +1611,8 @@ graph ] edge [ - source 0 - target 15 + source 5 + target 6 graphics [ fill "#000000" @@ -2059,7 +1621,7 @@ graph ] LabelGraphics [ - text "eAnnotations reference EModelElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2069,8 +1631,8 @@ graph ] edge [ - source 0 - target 11 + source 5 + target 9 graphics [ fill "#000000" @@ -2079,7 +1641,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2089,8 +1651,8 @@ graph ] edge [ - source 0 - target 13 + source 5 + target 10 graphics [ fill "#000000" @@ -2099,7 +1661,7 @@ graph ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2109,17 +1671,16 @@ graph ] edge [ - source 0 - target 14 + source 9 + target 7 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "eClassifiers reference EPackage" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2129,8 +1690,8 @@ graph ] edge [ - source 12 - target 7 + source 9 + target 8 graphics [ fill "#000000" @@ -2138,7 +1699,7 @@ graph ] LabelGraphics [ - text "source attribute EAnnotation" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2148,8 +1709,8 @@ graph ] edge [ - source 13 - target 2 + source 9 + target 11 graphics [ fill "#000000" @@ -2157,7 +1718,7 @@ graph ] LabelGraphics [ - text "abstract attribute EClass" + text "IncomingLinks reference FunctionalInput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2167,16 +1728,17 @@ graph ] edge [ - source 11 - target 8 + source 6 + target 7 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2186,16 +1748,17 @@ graph ] edge [ - source 14 - target 10 + source 6 + target 8 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceClassName attribute EClassifier" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2205,16 +1768,17 @@ graph ] edge [ - source 11 - target 9 + source 10 + target 11 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "instanceTypeName attribute EClassifier" + text "outgoingLinks reference FunctionalOutput" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2224,8 +1788,8 @@ graph ] edge [ - source 11 - target 2 + source 6 + target 5 graphics [ fill "#000000" @@ -2233,7 +1797,7 @@ graph ] LabelGraphics [ - text "serializable attribute EDataType" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2243,8 +1807,8 @@ graph ] edge [ - source 0 - target 10 + source 9 + target 5 graphics [ fill "#000000" @@ -2252,7 +1816,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2262,8 +1826,8 @@ graph ] edge [ - source 11 - target 8 + source 10 + target 5 graphics [ fill "#000000" @@ -2271,7 +1835,7 @@ graph ] LabelGraphics [ - text "name attribute ENamedElement" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2279,18 +1843,6515 @@ graph position "thead" ] ] - edge - [ - source 13 - target 9 - graphics - [ - fill "#000000" +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "parent reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "subElements reference Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 2 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 2 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2300,16 +8361,57 @@ graph ] edge [ - source 14 + source 5 target 8 graphics [ fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "name attribute ENamedElement" + text "data reference FunctionalInterface" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2319,16 +8421,17 @@ graph ] edge [ - source 0 + source 6 target 9 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "nsURI attribute EPackage" + text "terminator reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -2338,8 +8441,84 @@ graph ] edge [ - source 0 - target 8 + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 graphics [ fill "#000000" @@ -2347,7 +8526,7 @@ graph ] LabelGraphics [ - text "nsPrefix attribute EPackage" + text "interface reference FunctionalData" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png index 7b6e8da5..3c09036a 100644 Binary files a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi index 8bff1dc6..21ac69a6 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi @@ -1,8 +1,10 @@ - - - - - - - + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv index 6422beb9..f0a5df58 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv @@ -1,48 +1,20 @@ -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;441;2068;2486;3217702419;62;29;140;4;0;2 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;463;2860;2654;3199911479;74;37;138;5;0;3 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;499;2201;2467;3339884626;68;36;141;4;0;2 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;452;2821;2223;3526490298;59;27;122;5;0;2 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;11;1529;1717;4396467206;87;94;100;54;17;4;0;3 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;15;1411;1457;4222415279;54;68;77;36;10;4;0;5 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;9;1335;1288;2769089958;64;74;31;12;1;0;2 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;4;1180;1189;2923747093;50;58;26;10;1;0;1 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;839;2519;2455;3266543842;68;33;193;5;0;3 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;11;2019;1948;3337962573;91;104;53;16;2;0;3 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;1719;3345;2829;7904668959;235;261;107;497;53;0;6 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;13;1736;1740;2852471270;62;73;37;19;1;0;2 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;529;2502;2857;3681787432;68;30;125;4;0;2 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;788;2572;2188;3322713636;67;30;148;5;0;4 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;443;2849;2573;4906642931;151;171;75;124;7;0;8 -Task;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 -2;1;ModelResultImpl;19;4315;9042;20459725100;239;247;252;257;261;217;19;6;0;11 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;513;2237;2193;6152392500;162;177;77;150;6;0;5 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;11;1602;1604;2992330200;66;77;38;16;1;0;3 -Task;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 -2;1;ModelResultImpl;128;4855;10109;16068923000;382;391;398;403;409;349;37;8;0;16 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -2;1;ModelResultImpl;18;3632;9743;7955260600;299;307;313;261;17;7;0;8 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -2;1;ModelResultImpl;471;5606;10554;10190416000;482;497;509;400;189;16;0;21 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -2;1;ModelResultImpl;28;4850;10801;9664839300;622;635;651;560;23;18;0;20 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;6;1884;1462;3186743800;40;48;20;16;1;0;1 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -2;1;ModelResultImpl;9;4021;9222;7668037900;233;239;243;201;10;8;0;6 +Task;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 +1;1;ModelResultImpl;2;1459;1800;9941267600;254;383;414;441;477;249;6;14;0;5 +Task;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 +1;1;ModelResultImpl;0;1095;1138;10430069000;47;67;101;104;168;77;5;3;0;3 +Task;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 +1;1;ModelResultImpl;1;971;1320;9287027600;59;82;103;298;350;265;7;2;0;3 +Task;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 +1;1;ModelResultImpl;1;945;1239;9183595100;65;83;102;132;150;81;6;2;0;2 +Task;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 +1;1;ModelResultImpl;1;934;1758;9668065700;313;387;426;505;625;353;7;8;0;2 +Task;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 +1;1;ModelResultImpl;1;952;1268;9015161500;79;135;155;174;233;121;6;3;0;2 +Task;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 +1;1;ModelResultImpl;1;966;1534;9401550800;104;179;199;336;375;186;7;5;0;3 +Task;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 +1;1;ModelResultImpl;1;1027;1635;8949130900;249;277;316;417;444;258;5;5;0;4 +Task;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 +1;1;ModelResultImpl;1;928;1173;8877697600;49;109;128;149;167;83;5;2;0;3 +Task;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 +1;1;ModelResultImpl;2;1070;1291;9164916500;97;114;167;249;276;120;8;3;0;3 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 index 5caab94d..187ae1ac 100644 --- 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 @@ -1,55 +1,17 @@ -Error occured (IllegalArgumentException): Class FunctionalArchitectureModel is not translated to logic! - hu.bme.mit.inf.dslreasoner.ecore2logic.EClassMapper_AllElementAsObject.TypeofEClass(EClassMapper_AllElementAsObject.java:63) - hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.TypeofEClass(Ecore2Logic.java:96) - hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation.transform(InstanceModel2PartialInterpretation.java:99) - hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic.transform(InstanceModel2Logic.java:19) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:192) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Class FunctionalArchitectureModel is not translated to logic! - hu.bme.mit.inf.dslreasoner.ecore2logic.EClassMapper_AllElementAsObject.TypeofEClass(EClassMapper_AllElementAsObject.java:63) - hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.TypeofEClass(Ecore2Logic.java:96) - hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation.transform(InstanceModel2PartialInterpretation.java:99) - hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic.transform(InstanceModel2Logic.java:19) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:192) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Error loading group hu.bme.mit.inf.dslreasoner.domains.alloyexamples.FileSystem - org.eclipse.viatra.query.runtime.registry.ExtensionBasedQuerySpecificationLoader$QueryGroupProvider.get(ExtensionBasedQuerySpecificationLoader.java:204) - org.eclipse.viatra.query.runtime.registry.ExtensionBasedQuerySpecificationLoader$GroupBasedQuerySpecificationProvider.get(ExtensionBasedQuerySpecificationLoader.java:282) - org.eclipse.viatra.query.runtime.registry.ExtensionBasedQuerySpecificationLoader$GroupBasedQuerySpecificationProvider.get(ExtensionBasedQuerySpecificationLoader.java:1) - org.eclipse.viatra.query.runtime.registry.data.RegistryEntryImpl.get(RegistryEntryImpl.java:66) - org.eclipse.viatra.query.runtime.registry.data.RegistryEntryImpl.get(RegistryEntryImpl.java:1) - org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) - org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) - org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) - ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl.(FileSystemImpl.java:55) - ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemFactoryImpl.createFileSystem(filesystemFactoryImpl.java:74) - ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemFactoryImpl.create(filesystemFactoryImpl.java:59) - hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) - org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Error loading group hu.bme.mit.inf.dslreasoner.domains.alloyexamples.FileSystem - org.eclipse.viatra.query.runtime.registry.ExtensionBasedQuerySpecificationLoader$QueryGroupProvider.get(ExtensionBasedQuerySpecificationLoader.java:204) - org.eclipse.viatra.query.runtime.registry.ExtensionBasedQuerySpecificationLoader$GroupBasedQuerySpecificationProvider.get(ExtensionBasedQuerySpecificationLoader.java:282) - org.eclipse.viatra.query.runtime.registry.ExtensionBasedQuerySpecificationLoader$GroupBasedQuerySpecificationProvider.get(ExtensionBasedQuerySpecificationLoader.java:1) - org.eclipse.viatra.query.runtime.registry.data.RegistryEntryImpl.get(RegistryEntryImpl.java:66) - org.eclipse.viatra.query.runtime.registry.data.RegistryEntryImpl.get(RegistryEntryImpl.java:1) - org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) - org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) - org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) - ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl.(FileSystemImpl.java:55) - ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemFactoryImpl.createFileSystem(filesystemFactoryImpl.java:74) - ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemFactoryImpl.create(filesystemFactoryImpl.java:59) - hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) +Error occured (NullPointerException): + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108) + org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41) + com.google.common.collect.Iterators$6.computeNext(Iterators.java:617) + com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145) + com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140) + com.google.common.collect.Iterators.addAll(Iterators.java:366) + com.google.common.collect.Iterables.addAll(Iterables.java:332) + com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383) + org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) 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 index f90ed439..5ac9e1dc 100644 --- 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 @@ -104,27 +104,27 @@ private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretat { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or @@ -152,21 +152,21 @@ private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); } or @@ -194,17 +194,17 @@ private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or @@ -232,17 +232,17 @@ private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewTransition_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewTransition_class(problem, interpretation); neg find isPrimitive(element); } or @@ -270,18 +270,18 @@ private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); @@ -310,25 +310,25 @@ private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:Pa { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or @@ -356,25 +356,25 @@ private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or @@ -403,9 +403,9 @@ private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:Pa find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); @@ -413,9 +413,9 @@ private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:Pa find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); @@ -445,20 +445,20 @@ private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpreta find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -486,21 +486,21 @@ private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -528,25 +528,25 @@ private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or @@ -574,25 +574,25 @@ private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:Par { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or @@ -620,19 +620,19 @@ private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -681,17 +681,17 @@ private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -740,19 +740,19 @@ private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicP { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -987,1963 +987,1406 @@ private pattern mayInRelationregions_reference_CompositeElement( ////////// // 1.3 Relation Definition Indexers ////////// - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or - - { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or - - { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; } - -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); - find mustInstanceOfTransition_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); } - -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) { find interpretation(problem,interpretation); - find mustInstanceOfPseudostate_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ find interpretation(problem,interpretation); - find mustInstanceOfCompositeElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfTransition_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfState_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfSynchronization_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEntry_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfRegularState_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfChoice_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfVertex_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfExit_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFinalState_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfRegion_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); } -pattern createObject_Exit_class_by_vertices_reference_Region( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_r1) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfExit_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); } -pattern createObject_Exit_class( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_r1) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - find mayInstanceOfExit_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); } -pattern createObject_FinalState_class_by_vertices_reference_Region( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_r) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); } -pattern createObject_FinalState_class( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_r) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; } -pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_r) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); - find mustInstanceOfVertex_class(problem,interpretation,container); - find mayInstanceOfTransition_class(problem,interpretation,newObject); - find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; } -pattern createObject_Transition_class( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_t, var_src, var_trg) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); - find mayInstanceOfTransition_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; } -pattern createObject_Region_class_by_regions_reference_CompositeElement( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_t, var_src, var_trg) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); - find mustInstanceOfCompositeElement_class(problem,interpretation,container); - find mayInstanceOfRegion_class(problem,interpretation,newObject); - find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); } -pattern createObject_Region_class( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_t, var_src, var_trg) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); - find mayInstanceOfRegion_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; } -pattern createObject_Choice_class_by_vertices_reference_Region( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_t, var_e) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfChoice_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); } -pattern createObject_Choice_class( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_t, var_e) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); - find mayInstanceOfChoice_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); } -pattern createObject_Synchronization_class_by_vertices_reference_Region( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_t, var_e) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); } -pattern createObject_Synchronization_class( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_e) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); } -pattern createObject_Statechart_class_UndefinedPart( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_e) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); - find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); } -pattern createObject_Entry_class_by_vertices_reference_Region( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_e) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfEntry_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); } -pattern createObject_Entry_class( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_e, var_t1, var_t2) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); - find mayInstanceOfEntry_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); } -pattern createObject_State_class_by_vertices_reference_Region( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_e, var_t1, var_t2) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfState_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; } -pattern createObject_State_class( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_e, var_t1, var_t2) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); - find mayInstanceOfState_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} - -////////// -// 4.2 Type refinement -////////// -pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; } -pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); } -pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); } -pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); } -pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfState_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfState_class(problem,interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); } - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + var_region) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); - PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); - PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfVertex_class(problem,interpretation,from); - find mustInstanceOfTransition_class(problem,interpretation,to); - find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); - neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); -} -import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" - -////////// -// 0. Util -////////// -private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { - PartialInterpretation.problem(interpretation,problem); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); } - -///////////////////////// -// 0.1 Existence -///////////////////////// -private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find interpretation(problem,interpretation); - LogicProblem.elements(problem,element); -} or { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); -} - -private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find mustExist(problem,interpretation,element); -} or { - find interpretation(problem,interpretation); - neg find elementCloseWorld(element); - PartialInterpretation.openWorldElements(interpretation,element); -} - -private pattern elementCloseWorld(element:DefinedElement) { - PartialInterpretation.openWorldElements(i,element); - PartialInterpretation.maxNewElements(i,0); -} or { - Scope.targetTypeInterpretation(scope,interpretation); - PartialTypeInterpratation.elements(interpretation,element); - Scope.maxNewElements(scope,0); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; } - -//////////////////////// -// 0.2 Equivalence -//////////////////////// -pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { - find mayExist(problem,interpretation,a); - find mayExist(problem,interpretation,b); - a == b; +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); } - -//////////////////////// -// 0.3 Required Patterns by TypeIndexer -//////////////////////// -private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; } - -private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - TypeDefinition.elements(type,element); -} or { + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ find interpretation(problem,interpretation); - find typeInterpretation(problem,interpretation,type,typeInterpretation); - PartialComplexTypeInterpretation.elements(typeInterpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); } - -private pattern isPrimitive(element: PrimitiveElement) { - PrimitiveElement(element); +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); } - -////////// -// 1. Problem-Specific Base Indexers -////////// -// 1.1 Type Indexers -////////// -// 1.1.1 primitive Type Indexers -////////// - -////////// -// 1.1.2 domain-specific Type Indexers -////////// -/** - * An element must be an instance of type "FileSystem class". - */ -private pattern mustInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FileSystem class"); - find directInstanceOf(problem,interpretation,element,type); +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); } -private pattern scopeDisallowsNewFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FileSystem class"); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); } - -/** - * An element may be an instance of type "FileSystem class". - */ -private pattern mayInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFileSystem_class(problem,interpretation,element); } -/** - * An element must be an instance of type "FSObject class". - */ -private pattern mustInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FSObject class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FSObject class"); -} - -/** - * An element may be an instance of type "FSObject class". - */ -private pattern mayInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFSObject_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Dir class". - */ -private pattern mustInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Dir class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewDir_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Dir class"); -} - -/** - * An element may be an instance of type "Dir class". - */ -private pattern mayInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfDir_class(problem,interpretation,element); } -/** - * An element must be an instance of type "File class". - */ -private pattern mustInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"File class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFile_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"File class"); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); } - -/** - * An element may be an instance of type "File class". - */ -private pattern mayInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFile_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class". - */ -private pattern mustInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class"); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); } - -/** - * An element may be an instance of type "Model class". - */ -private pattern mayInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class DefinedPart". - */ -private pattern mustInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class DefinedPart"); -} - -/** - * An element may be an instance of type "Model class DefinedPart". - */ -private pattern mayInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class UndefinedPart". - */ -private pattern mustInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class UndefinedPart"); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); } - -/** - * An element may be an instance of type "Model class UndefinedPart". - */ -private pattern mayInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); } - -////////// -// 1.2 Relation Declaration Indexers -////////// -/** - * Matcher for detecting tuples t where []root reference FileSystem(source,target) - */ -private pattern mustInRelationroot_reference_FileSystem( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); } -/** - * Matcher for detecting tuples t where <>root reference FileSystem(source,target) - */ -private pattern mayInRelationroot_reference_FileSystem( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFileSystem_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); } -/** - * Matcher for detecting tuples t where []live reference FileSystem(source,target) - */ -private pattern mustInRelationlive_reference_FileSystem( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"live reference FileSystem"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); } -/** - * Matcher for detecting tuples t where <>live reference FileSystem(source,target) - */ -private pattern mayInRelationlive_reference_FileSystem( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFileSystem_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); -} or { - find mustInRelationlive_reference_FileSystem(problem,interpretation,source,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); } -/** - * Matcher for detecting tuples t where []parent reference FSObject(source,target) - */ -private pattern mustInRelationparent_reference_FSObject( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FSObject"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; } -/** - * Matcher for detecting tuples t where <>parent reference FSObject(source,target) - */ -private pattern mayInRelationparent_reference_FSObject( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFSObject_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationparent_reference_FSObject(problem,interpretation,source,target); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); } -/** - * Matcher for detecting tuples t where []contents reference Dir(source,target) - */ -private pattern mustInRelationcontents_reference_Dir( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference Dir"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; } -/** - * Matcher for detecting tuples t where <>contents reference Dir(source,target) - */ -private pattern mayInRelationcontents_reference_Dir( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfDir_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); } -/** - * Matcher for detecting tuples t where []filesystems reference Model(source,target) - */ -private pattern mustInRelationfilesystems_reference_Model( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); } -/** - * Matcher for detecting tuples t where <>filesystems reference Model(source,target) - */ -private pattern mayInRelationfilesystems_reference_Model( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFileSystem_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); } -/** - * Matcher for detecting tuples t where []otherFSObjects reference Model(source,target) - */ -private pattern mustInRelationotherFSObjects_reference_Model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_v) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"otherFSObjects reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); } -/** - * Matcher for detecting tuples t where <>otherFSObjects reference Model(source,target) - */ -private pattern mayInRelationotherFSObjects_reference_Model( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_v) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); -} - -////////// -// 1.3 Relation Definition Indexers -////////// - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); }or - - { find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); }or - - { find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; } - -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_root_reference_FileSystem(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; } -pattern unfinishedLowerMultiplicity_filesystems_reference_Model(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); } - -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) { find interpretation(problem,interpretation); - find mustInstanceOfFile_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfModel_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfModel_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; } -pattern createObject_Model_class_UndefinedPart( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_v) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Model class UndefinedPart"); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; } -pattern createObject_Dir_class_by_root_reference_FileSystem( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationroot_reference_FileSystem(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); } -pattern createObject_Dir_class_by_contents_reference_Dir_with_parent_reference_FSObject( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; } -pattern createObject_Dir_class_by_otherFSObjects_reference_Model( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; } -pattern createObject_Dir_class( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_parent, var_child) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; } -pattern createObject_File_class_by_contents_reference_Dir_with_parent_reference_FSObject( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_parent, var_child) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); } -pattern createObject_File_class_by_otherFSObjects_reference_Model( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_parent, var_child) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; } -pattern createObject_File_class( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_s, var_v) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); } -pattern createObject_FileSystem_class_by_filesystems_reference_Model( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_s, var_v) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); - find mayInRelationfilesystems_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); } -pattern createObject_FileSystem_class( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_s, var_v) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} - -////////// -// 4.2 Type refinement -////////// -pattern refineTypeTo_Model_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); -} -pattern refineTypeTo_Dir_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); } -pattern refineTypeTo_File_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); } -pattern refineTypeTo_FileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; } - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_live_reference_FileSystem( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + var_composite) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"live reference FileSystem"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfFileSystem_class(problem,interpretation,from); - find mustInstanceOfFSObject_class(problem,interpretation,to); - find mayInRelationlive_reference_FileSystem(problem,interpretation,from,to); - neg find mustInRelationlive_reference_FileSystem(problem,interpretation,from,to); -} -import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" - -////////// -// 0. Util -////////// -private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { - PartialInterpretation.problem(interpretation,problem); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; } - -///////////////////////// -// 0.1 Existence -///////////////////////// -private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find interpretation(problem,interpretation); - LogicProblem.elements(problem,element); -} or { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); -} - -private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find mustExist(problem,interpretation,element); -} or { - find interpretation(problem,interpretation); - neg find elementCloseWorld(element); - PartialInterpretation.openWorldElements(interpretation,element); -} - -private pattern elementCloseWorld(element:DefinedElement) { - PartialInterpretation.openWorldElements(i,element); - PartialInterpretation.maxNewElements(i,0); -} or { - Scope.targetTypeInterpretation(scope,interpretation); - PartialTypeInterpratation.elements(interpretation,element); - Scope.maxNewElements(scope,0); -} - -//////////////////////// -// 0.2 Equivalence -//////////////////////// -pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { - find mayExist(problem,interpretation,a); - find mayExist(problem,interpretation,b); - a == b; -} - -//////////////////////// -// 0.3 Required Patterns by TypeIndexer -//////////////////////// -private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); } - -private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - TypeDefinition.elements(type,element); -} or { + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ find interpretation(problem,interpretation); - find typeInterpretation(problem,interpretation,type,typeInterpretation); - PartialComplexTypeInterpretation.elements(typeInterpretation,element); -} - -private pattern isPrimitive(element: PrimitiveElement) { - PrimitiveElement(element); -} - -////////// -// 1. Problem-Specific Base Indexers -////////// -// 1.1 Type Indexers -////////// -// 1.1.1 primitive Type Indexers -////////// - -////////// -// 1.1.2 domain-specific Type Indexers -////////// -/** - * An element must be an instance of type "FileSystem class". - */ -private pattern mustInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FileSystem class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FileSystem class"); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; } - -/** - * An element may be an instance of type "FileSystem class". - */ -private pattern mayInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); - neg find isPrimitive(element); -} or { + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFileSystem_class(problem,interpretation,element); } -/** - * An element must be an instance of type "FSObject class". - */ -private pattern mustInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FSObject class"); - find directInstanceOf(problem,interpretation,element,type); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; } -private pattern scopeDisallowsNewFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FSObject class"); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); } - -/** - * An element may be an instance of type "FSObject class". - */ -private pattern mayInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFSObject_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Dir class". - */ -private pattern mustInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Dir class"); - find directInstanceOf(problem,interpretation,element,type); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; } -private pattern scopeDisallowsNewDir_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Dir class"); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; } -/** - * An element may be an instance of type "Dir class". - */ -private pattern mayInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfDir_class(problem,interpretation,element); } -/** - * An element must be an instance of type "File class". - */ -private pattern mustInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"File class"); - find directInstanceOf(problem,interpretation,element,type); +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); } -private pattern scopeDisallowsNewFile_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"File class"); + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); } -/** - * An element may be an instance of type "File class". - */ -private pattern mayInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFile_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class". - */ -private pattern mustInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class"); - find directInstanceOf(problem,interpretation,element,type); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); } -private pattern scopeDisallowsNewModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class"); +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); } - -/** - * An element may be an instance of type "Model class". - */ -private pattern mayInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class DefinedPart". - */ -private pattern mustInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); } -private pattern scopeDisallowsNewModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class DefinedPart"); +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); } - -/** - * An element may be an instance of type "Model class DefinedPart". - */ -private pattern mayInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class UndefinedPart". - */ -private pattern mustInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); } -private pattern scopeDisallowsNewModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { - find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class UndefinedPart"); +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); } - -/** - * An element may be an instance of type "Model class UndefinedPart". - */ -private pattern mayInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); } - -////////// -// 1.2 Relation Declaration Indexers -////////// -/** - * Matcher for detecting tuples t where []root reference FileSystem(source,target) - */ -private pattern mustInRelationroot_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); } -/** - * Matcher for detecting tuples t where <>root reference FileSystem(source,target) - */ -private pattern mayInRelationroot_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) { - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFileSystem_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); } -/** - * Matcher for detecting tuples t where []live reference FileSystem(source,target) - */ -private pattern mustInRelationlive_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"live reference FileSystem"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); } -/** - * Matcher for detecting tuples t where <>live reference FileSystem(source,target) - */ -private pattern mayInRelationlive_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) { - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFileSystem_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); -} or { - find mustInRelationlive_reference_FileSystem(problem,interpretation,source,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); } -/** - * Matcher for detecting tuples t where []parent reference FSObject(source,target) - */ -private pattern mustInRelationparent_reference_FSObject( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FSObject"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); } -/** - * Matcher for detecting tuples t where <>parent reference FSObject(source,target) - */ -private pattern mayInRelationparent_reference_FSObject( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFSObject_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationparent_reference_FSObject(problem,interpretation,source,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); } -/** - * Matcher for detecting tuples t where []contents reference Dir(source,target) - */ -private pattern mustInRelationcontents_reference_Dir( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference Dir"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); } -/** - * Matcher for detecting tuples t where <>contents reference Dir(source,target) - */ -private pattern mayInRelationcontents_reference_Dir( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfDir_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); } -/** - * Matcher for detecting tuples t where []filesystems reference Model(source,target) - */ -private pattern mustInRelationfilesystems_reference_Model( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); } -/** - * Matcher for detecting tuples t where <>filesystems reference Model(source,target) - */ -private pattern mayInRelationfilesystems_reference_Model( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) { - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFileSystem_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); } -/** - * Matcher for detecting tuples t where []otherFSObjects reference Model(source,target) - */ -private pattern mustInRelationotherFSObjects_reference_Model( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"otherFSObjects reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); } -/** - * Matcher for detecting tuples t where <>otherFSObjects reference Model(source,target) - */ -private pattern mayInRelationotherFSObjects_reference_Model( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) { - find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); -} - -////////// -// 1.3 Relation Definition Indexers -////////// - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); }or - - { find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); }or - - { find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); } -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// - ////////// // 3. Unfinishedness Indexers ////////// // 3.1 Unfinishedness Measured by Multiplicity ////////// -pattern unfinishedLowerMultiplicity_root_reference_FileSystem(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_filesystems_reference_Model(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,object,_); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } @@ -2951,187 +2394,407 @@ pattern unfinishedLowerMultiplicity_filesystems_reference_Model(problem:LogicPro ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) { - find interpretation(problem,interpretation); - find mustInstanceOfFile_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfModel_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfModel_class_DefinedPart(problem,interpretation,root); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,root); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_Model_class_UndefinedPart( +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Model class UndefinedPart"); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_File_class_by_contents_reference_Dir_with_parent_reference_FSObject( +pattern createObject_FinalState_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_File_class_by_otherFSObjects_reference_Model( +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_File_class( +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Statechart_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - find mayInstanceOfFile_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Dir_class_by_root_reference_FileSystem( +pattern createObject_Entry_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationroot_reference_FileSystem(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Dir_class_by_contents_reference_Dir_with_parent_reference_FSObject( +pattern createObject_Entry_class( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Dir_class_by_otherFSObjects_reference_Model( +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Dir_class( +pattern createObject_Transition_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - find mayInstanceOfDir_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FileSystem_class_by_filesystems_reference_Model( +pattern createObject_Region_class_by_regions_reference_CompositeElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); - find mayInRelationfilesystems_reference_Model(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FileSystem_class( +pattern createObject_Region_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -3139,58 +2802,126 @@ pattern createObject_FileSystem_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_Model_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); } -pattern refineTypeTo_File_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); } -pattern refineTypeTo_Dir_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); } -pattern refineTypeTo_FileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); } ////////// // 4.3 Relation refinement ////////// -pattern refineRelation_live_reference_FileSystem( +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"live reference FileSystem"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfFileSystem_class(problem,interpretation,from); - find mustInstanceOfFSObject_class(problem,interpretation,to); - find mayInRelationlive_reference_FileSystem(problem,interpretation,from,to); - neg find mustInRelationlive_reference_FileSystem(problem,interpretation,from,to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); } import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" @@ -3298,27 +3029,27 @@ private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretat { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or @@ -3346,9 +3077,9 @@ private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); @@ -3356,9 +3087,9 @@ private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:P } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); @@ -3388,16 +3119,16 @@ private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); @@ -3464,18 +3195,18 @@ private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); @@ -3504,25 +3235,25 @@ private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:Pa { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or @@ -3550,25 +3281,25 @@ private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or @@ -3598,8 +3329,8 @@ private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:Pa PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); @@ -3608,8 +3339,8 @@ private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:Pa PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); @@ -3638,21 +3369,21 @@ private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpreta { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -3682,8 +3413,8 @@ private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interp PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); @@ -3692,8 +3423,8 @@ private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interp PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); @@ -3722,25 +3453,25 @@ private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or @@ -3768,25 +3499,25 @@ private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:Par { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or @@ -3815,18 +3546,18 @@ private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretati find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -3875,16 +3606,16 @@ private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); @@ -3934,18 +3665,18 @@ private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicP { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); @@ -5687,55 +5418,55 @@ pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_ private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustInstanceOfEntry_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfVertex_class(problem,interpretation,root); + find mustInstanceOfChoice_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustInstanceOfFinalState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfTransition_class(problem,interpretation,root); + find mustInstanceOfStatechart_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfRegion_class(problem,interpretation,root); + find mustInstanceOfVertex_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustInstanceOfState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfExit_class(problem,interpretation,root); + find mustInstanceOfPseudostate_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfChoice_class(problem,interpretation,root); + find mustInstanceOfExit_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustInstanceOfTransition_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustInstanceOfRegularState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfEntry_class(problem,interpretation,root); + find mustInstanceOfRegion_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfState_class(problem,interpretation,root); + find mustInstanceOfSynchronization_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -5754,157 +5485,157 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_Entry_class_by_vertices_reference_Region( +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInstanceOfState_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Entry_class( +pattern createObject_State_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); - find mayInstanceOfEntry_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Choice_class_by_vertices_reference_Region( +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfChoice_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Choice_class( +pattern createObject_Transition_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); - find mayInstanceOfChoice_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_State_class_by_vertices_reference_Region( +pattern createObject_Synchronization_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_State_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); - find mayInstanceOfState_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Statechart_class_UndefinedPart( +pattern createObject_Synchronization_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); - find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( +pattern createObject_Exit_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); - find mustInstanceOfVertex_class(problem,interpretation,container); - find mayInstanceOfTransition_class(problem,interpretation,newObject); - find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Transition_class( +pattern createObject_Exit_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); - find mayInstanceOfTransition_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Region_class_by_regions_reference_CompositeElement( +pattern createObject_Choice_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); - find mustInstanceOfCompositeElement_class(problem,interpretation,container); - find mayInstanceOfRegion_class(problem,interpretation,newObject); - find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Region_class( +pattern createObject_Choice_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); - find mayInstanceOfRegion_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -5936,59 +5667,59 @@ pattern createObject_FinalState_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Exit_class_by_vertices_reference_Region( +pattern createObject_Region_class_by_regions_reference_CompositeElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfExit_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Exit_class( +pattern createObject_Region_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - find mayInstanceOfExit_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Synchronization_class_by_vertices_reference_Region( +pattern createObject_Entry_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInstanceOfEntry_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Synchronization_class( +pattern createObject_Entry_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -5996,31 +5727,14 @@ pattern createObject_Synchronization_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); -} -pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); } pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); @@ -6029,72 +5743,89 @@ pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInt neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); -} -pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); } pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); } -pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); } -pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); } -pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); } -pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); } ////////// @@ -6223,27 +5954,27 @@ private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretat { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6271,21 +6002,21 @@ private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6313,17 +6044,17 @@ private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6351,16 +6082,16 @@ private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewTransition_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewTransition_class(problem, interpretation); neg find isPrimitive(element); @@ -6391,8 +6122,8 @@ private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretati PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or { @@ -6400,8 +6131,8 @@ private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretati PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6429,25 +6160,25 @@ private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:Pa { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6475,25 +6206,25 @@ private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6523,9 +6254,9 @@ private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:Pa PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); } or { @@ -6533,9 +6264,9 @@ private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:Pa PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6563,21 +6294,21 @@ private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpreta { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6607,9 +6338,9 @@ private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interp PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or { @@ -6617,9 +6348,9 @@ private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interp PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6647,25 +6378,25 @@ private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6693,25 +6424,25 @@ private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:Par { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6739,19 +6470,19 @@ private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -6801,16 +6532,16 @@ private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -6860,18 +6591,18 @@ private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicP find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -8612,55 +8343,55 @@ pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_ private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustInstanceOfEntry_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfVertex_class(problem,interpretation,root); + find mustInstanceOfChoice_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustInstanceOfFinalState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfTransition_class(problem,interpretation,root); + find mustInstanceOfStatechart_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfRegion_class(problem,interpretation,root); + find mustInstanceOfVertex_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustInstanceOfState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfExit_class(problem,interpretation,root); + find mustInstanceOfPseudostate_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfChoice_class(problem,interpretation,root); + find mustInstanceOfExit_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustInstanceOfTransition_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustInstanceOfRegularState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfEntry_class(problem,interpretation,root); + find mustInstanceOfRegion_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfState_class(problem,interpretation,root); + find mustInstanceOfSynchronization_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -8679,115 +8410,115 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_State_class_by_vertices_reference_Region( +pattern createObject_Exit_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInstanceOfExit_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_State_class( +pattern createObject_Exit_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); - find mayInstanceOfState_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FinalState_class_by_vertices_reference_Region( +pattern createObject_State_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInstanceOfState_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FinalState_class( +pattern createObject_State_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Choice_class_by_vertices_reference_Region( +pattern createObject_Synchronization_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Choice_class( +pattern createObject_Synchronization_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); - find mayInstanceOfChoice_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Entry_class_by_vertices_reference_Region( +pattern createObject_Choice_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInstanceOfChoice_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Entry_class( +pattern createObject_Choice_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); - find mayInstanceOfEntry_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -8803,61 +8534,59 @@ pattern createObject_Statechart_class_UndefinedPart( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Exit_class_by_vertices_reference_Region( +pattern createObject_FinalState_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Exit_class( +pattern createObject_FinalState_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - find mayInstanceOfExit_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( +pattern createObject_Entry_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); - find mustInstanceOfVertex_class(problem,interpretation,container); - find mayInstanceOfTransition_class(problem,interpretation,newObject); - find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Transition_class( +pattern createObject_Entry_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); - find mayInstanceOfTransition_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -8889,31 +8618,33 @@ pattern createObject_Region_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Synchronization_class_by_vertices_reference_Region( +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Synchronization_class( +pattern createObject_Transition_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -8921,105 +8652,105 @@ pattern createObject_Synchronization_class( ////////// // 4.2 Type refinement ////////// +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfState_class(problem,interpretation,element); - neg find mustInstanceOfState_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); } -pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); } pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); -} -pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); } pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); } -pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); } -pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); } pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); } -pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); } ////////// @@ -9148,27 +8879,27 @@ private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretat { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9196,21 +8927,21 @@ private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9238,17 +8969,17 @@ private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9314,19 +9045,19 @@ private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9354,25 +9085,25 @@ private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:Pa { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9400,25 +9131,25 @@ private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9446,21 +9177,21 @@ private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:Pa { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9488,21 +9219,21 @@ private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpreta { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9530,21 +9261,21 @@ private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9572,25 +9303,25 @@ private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9618,25 +9349,25 @@ private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:Par { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9664,19 +9395,19 @@ private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -9725,16 +9456,16 @@ private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); @@ -9784,18 +9515,18 @@ private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicP { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); @@ -11537,55 +11268,55 @@ pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_ private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustInstanceOfEntry_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfVertex_class(problem,interpretation,root); + find mustInstanceOfChoice_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustInstanceOfFinalState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfTransition_class(problem,interpretation,root); + find mustInstanceOfStatechart_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfRegion_class(problem,interpretation,root); + find mustInstanceOfVertex_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustInstanceOfState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfExit_class(problem,interpretation,root); + find mustInstanceOfPseudostate_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfChoice_class(problem,interpretation,root); + find mustInstanceOfExit_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustInstanceOfTransition_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustInstanceOfRegularState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfEntry_class(problem,interpretation,root); + find mustInstanceOfRegion_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfState_class(problem,interpretation,root); + find mustInstanceOfSynchronization_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -11604,145 +11335,173 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_Entry_class_by_vertices_reference_Region( +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInstanceOfChoice_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Entry_class( +pattern createObject_Choice_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); - find mayInstanceOfEntry_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FinalState_class_by_vertices_reference_Region( +pattern createObject_Exit_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInstanceOfExit_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FinalState_class( +pattern createObject_Exit_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Synchronization_class_by_vertices_reference_Region( +pattern createObject_Entry_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInstanceOfEntry_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Synchronization_class( +pattern createObject_Entry_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( +pattern createObject_Region_class_by_regions_reference_CompositeElement( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); - find mustInstanceOfVertex_class(problem,interpretation,container); - find mayInstanceOfTransition_class(problem,interpretation,newObject); - find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Transition_class( +pattern createObject_Region_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); - find mayInstanceOfTransition_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Choice_class_by_vertices_reference_Region( +pattern createObject_Synchronization_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Choice_class( +pattern createObject_Synchronization_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); - find mayInstanceOfChoice_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -11758,31 +11517,31 @@ pattern createObject_Statechart_class_UndefinedPart( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Region_class_by_regions_reference_CompositeElement( +pattern createObject_FinalState_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); - find mustInstanceOfCompositeElement_class(problem,interpretation,container); - find mayInstanceOfRegion_class(problem,interpretation,newObject); - find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Region_class( +pattern createObject_FinalState_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); - find mayInstanceOfRegion_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -11814,137 +11573,109 @@ pattern createObject_State_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Exit_class_by_vertices_reference_Region( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfExit_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Exit_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - find mayInstanceOfExit_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); } -pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); } -pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); } -pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfTransition_class(problem,interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); } -pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); } pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } -pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); } pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfState_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfState_class(problem,interpretation,element); -} -pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); } ////////// @@ -12075,12 +11806,12 @@ private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretat PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or { @@ -12088,12 +11819,12 @@ private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretat PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12121,21 +11852,21 @@ private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12201,17 +11932,17 @@ private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewTransition_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewTransition_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12239,19 +11970,19 @@ private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12281,11 +12012,11 @@ private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:Pa PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or { @@ -12293,11 +12024,11 @@ private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:Pa PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12326,24 +12057,24 @@ private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpr find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12371,21 +12102,21 @@ private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:Pa { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12413,21 +12144,21 @@ private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpreta { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12455,20 +12186,20 @@ private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); @@ -12499,11 +12230,11 @@ private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:P PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or { @@ -12511,11 +12242,11 @@ private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:P PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12545,11 +12276,11 @@ private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:Par PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or { @@ -12557,11 +12288,11 @@ private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:Par PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12589,19 +12320,19 @@ private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -12651,16 +12382,16 @@ private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -12710,8 +12441,8 @@ private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicP find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); @@ -12719,8 +12450,8 @@ private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicP find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); @@ -14462,55 +14193,55 @@ pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_ private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustInstanceOfEntry_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfVertex_class(problem,interpretation,root); + find mustInstanceOfChoice_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustInstanceOfFinalState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfTransition_class(problem,interpretation,root); + find mustInstanceOfStatechart_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfRegion_class(problem,interpretation,root); + find mustInstanceOfVertex_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustInstanceOfState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfExit_class(problem,interpretation,root); + find mustInstanceOfPseudostate_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfChoice_class(problem,interpretation,root); + find mustInstanceOfExit_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustInstanceOfTransition_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustInstanceOfRegularState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfEntry_class(problem,interpretation,root); + find mustInstanceOfRegion_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfState_class(problem,interpretation,root); + find mustInstanceOfSynchronization_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -14529,6 +14260,34 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, @@ -14587,59 +14346,31 @@ pattern createObject_Synchronization_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_State_class_by_vertices_reference_Region( +pattern createObject_FinalState_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfState_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_State_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); - find mayInstanceOfState_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Exit_class_by_vertices_reference_Region( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Exit_class( +pattern createObject_FinalState_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - find mayInstanceOfExit_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -14671,31 +14402,15 @@ pattern createObject_Choice_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FinalState_class_by_vertices_reference_Region( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FinalState_class( +pattern createObject_Statechart_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -14755,15 +14470,31 @@ pattern createObject_Entry_class( find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Statechart_class_UndefinedPart( +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); - find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -14771,14 +14502,25 @@ pattern createObject_Statechart_class_UndefinedPart( ////////// // 4.2 Type refinement ////////// +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); +} pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); } pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); @@ -14786,36 +14528,22 @@ pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation: find mayInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); } -pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfState_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); -} -pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); } pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); @@ -14823,31 +14551,30 @@ pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialIn find mayInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); } -pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFinalState_class(problem,interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); } pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); } pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); @@ -14855,21 +14582,25 @@ pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInt find mayInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); } -pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); } ////////// @@ -14998,27 +14729,27 @@ private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretat { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15046,21 +14777,21 @@ private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15088,17 +14819,17 @@ private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15127,16 +14858,16 @@ private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretati find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewTransition_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewTransition_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15164,19 +14895,19 @@ private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15204,25 +14935,25 @@ private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:Pa { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15250,25 +14981,25 @@ private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15296,21 +15027,21 @@ private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:Pa { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15338,21 +15069,21 @@ private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpreta { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15380,21 +15111,21 @@ private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15422,25 +15153,25 @@ private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:P { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15468,25 +15199,25 @@ private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:Par { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15514,19 +15245,19 @@ private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); } or @@ -15634,18 +15365,18 @@ private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicP { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); @@ -17387,15 +17118,15 @@ pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_ private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustInstanceOfEntry_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfEntry_class(problem,interpretation,root); + find mustInstanceOfChoice_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfTransition_class(problem,interpretation,root); + find mustInstanceOfFinalState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -17403,39 +17134,39 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfState_class(problem,interpretation,root); + find mustInstanceOfStatechart_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfChoice_class(problem,interpretation,root); + find mustInstanceOfVertex_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustInstanceOfState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfRegion_class(problem,interpretation,root); + find mustInstanceOfPseudostate_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfVertex_class(problem,interpretation,root); + find mustInstanceOfExit_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfExit_class(problem,interpretation,root); + find mustInstanceOfTransition_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustInstanceOfRegularState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustInstanceOfRegion_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustInstanceOfSynchronization_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); @@ -17454,241 +17185,241 @@ private pattern hasElementInContainment(problem:LogicProblem, interpretation:Par find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_State_class_by_vertices_reference_Region( +pattern createObject_Exit_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInstanceOfExit_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_State_class( +pattern createObject_Exit_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); - find mayInstanceOfState_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FinalState_class_by_vertices_reference_Region( +pattern createObject_Entry_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInstanceOfEntry_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FinalState_class( +pattern createObject_Entry_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Synchronization_class_by_vertices_reference_Region( +pattern createObject_FinalState_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Synchronization_class( +pattern createObject_FinalState_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Region_class_by_regions_reference_CompositeElement( +pattern createObject_Choice_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); - find mustInstanceOfCompositeElement_class(problem,interpretation,container); - find mayInstanceOfRegion_class(problem,interpretation,newObject); - find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Region_class( +pattern createObject_Choice_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); - find mayInstanceOfRegion_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Entry_class_by_vertices_reference_Region( +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfEntry_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Entry_class( +pattern createObject_Region_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); - find mayInstanceOfEntry_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Exit_class_by_vertices_reference_Region( +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfExit_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Exit_class( +pattern createObject_Transition_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - find mayInstanceOfExit_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Choice_class_by_vertices_reference_Region( +pattern createObject_Synchronization_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Choice_class( +pattern createObject_Synchronization_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); - find mayInstanceOfChoice_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( +pattern createObject_State_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); - find mustInstanceOfVertex_class(problem,interpretation,container); - find mayInstanceOfTransition_class(problem,interpretation,newObject); - find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Transition_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); - find mayInstanceOfTransition_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Statechart_class_UndefinedPart( +pattern createObject_State_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); - find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -17696,105 +17427,105 @@ pattern createObject_Statechart_class_UndefinedPart( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfState_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); - neg find mustInstanceOfState_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); } pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); } -pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); } -pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfRegion_class(problem,interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); } -pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); } -pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); } -pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); -} -pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); } -pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); } ////////// @@ -17923,27 +17654,27 @@ private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretat { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find scopeDisallowsNewPseudostate_class(problem, interpretation); neg find isPrimitive(element); } or @@ -17972,9 +17703,9 @@ private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:P find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); @@ -17982,9 +17713,9 @@ private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:P find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find scopeDisallowsNewVertex_class(problem, interpretation); neg find isPrimitive(element); @@ -18014,16 +17745,16 @@ private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:P find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewRegion_class(problem, interpretation); neg find isPrimitive(element); } or @@ -18089,19 +17820,19 @@ private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretati { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class(problem, interpretation); neg find isPrimitive(element); } or @@ -18129,25 +17860,25 @@ private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:Pa { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find scopeDisallowsNewEntry_class(problem, interpretation); neg find isPrimitive(element); } or @@ -18175,25 +17906,25 @@ private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpr { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find scopeDisallowsNewSynchronization_class(problem, interpretation); neg find isPrimitive(element); } or @@ -18221,20 +17952,20 @@ private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:Pa { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find scopeDisallowsNewState_class(problem, interpretation); neg find isPrimitive(element); @@ -18263,20 +17994,20 @@ private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpreta { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find scopeDisallowsNewRegularState_class(problem, interpretation); neg find isPrimitive(element); @@ -18305,21 +18036,21 @@ private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interp { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); neg find isPrimitive(element); } or @@ -18348,24 +18079,24 @@ private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:P find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find scopeDisallowsNewChoice_class(problem, interpretation); neg find isPrimitive(element); } or @@ -18393,25 +18124,25 @@ private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:Par { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); neg find scopeDisallowsNewExit_class(problem, interpretation); neg find isPrimitive(element); } or @@ -18440,8 +18171,8 @@ private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretati find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); @@ -18449,8 +18180,8 @@ private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretati find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfPseudostate_class(problem,interpretation,element); neg find scopeDisallowsNewFinalState_class(problem, interpretation); neg find isPrimitive(element); @@ -18500,17 +18231,17 @@ private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfRegion_class(problem,interpretation,element); neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -18559,19 +18290,19 @@ private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicP { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find mustInstanceOfTransition_class(problem,interpretation,element); neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or @@ -20273,1233 +20004,2736 @@ pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_ { find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); } -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, - var_s, var_v1, var_v2) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, - var_s) +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); } -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, - var_s, var_v1, var_v2) +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, - var_s, var_v) +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); } -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, - var_s) +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, - var_s1, var_s2) +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } ////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors +// 1.3 Relation Definition Indexers ////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) { find interpretation(problem,interpretation); - find mustInstanceOfPseudostate_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfEntry_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfTransition_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfCompositeElement_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfState_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfChoice_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfRegularState_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ find interpretation(problem,interpretation); - find mustInstanceOfRegion_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ find interpretation(problem,interpretation); - find mustInstanceOfVertex_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ find interpretation(problem,interpretation); - find mustInstanceOfExit_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ find interpretation(problem,interpretation); - find mustInstanceOfFinalState_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ find interpretation(problem,interpretation); - find mustInstanceOfSynchronization_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ find interpretation(problem,interpretation); - find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ find interpretation(problem,interpretation); - find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ find interpretation(problem,interpretation); - find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); } -pattern createObject_Choice_class_by_vertices_reference_Region( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_t, var_src, var_trg) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfChoice_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; } -pattern createObject_Choice_class( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_t, var_e) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); - find mayInstanceOfChoice_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); } -pattern createObject_Statechart_class_UndefinedPart( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_t, var_e) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); - find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); } -pattern createObject_FinalState_class_by_vertices_reference_Region( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_t, var_e) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); } -pattern createObject_FinalState_class( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_e) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); - find mayInstanceOfFinalState_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); } -pattern createObject_Region_class_by_regions_reference_CompositeElement( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_e) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); - find mustInstanceOfCompositeElement_class(problem,interpretation,container); - find mayInstanceOfRegion_class(problem,interpretation,newObject); - find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); } -pattern createObject_Region_class( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_e) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); - find mayInstanceOfRegion_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); } -pattern createObject_Entry_class_by_vertices_reference_Region( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_e, var_t1, var_t2) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfEntry_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); } -pattern createObject_Entry_class( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_e, var_t1, var_t2) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); - find mayInstanceOfEntry_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; } -pattern createObject_Exit_class_by_vertices_reference_Region( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_e, var_t1, var_t2) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfExit_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; } -pattern createObject_Exit_class( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_t, var_e) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); - find mayInstanceOfExit_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -pattern createObject_State_class_by_vertices_reference_Region( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_t, var_e) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfState_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); } -pattern createObject_State_class( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_t, var_e) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); - find mayInstanceOfState_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_t, var_f) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); - find mustInstanceOfVertex_class(problem,interpretation,container); - find mayInstanceOfTransition_class(problem,interpretation,newObject); - find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -pattern createObject_Transition_class( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_t, var_f) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); - find mayInstanceOfTransition_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); } -pattern createObject_Synchronization_class_by_vertices_reference_Region( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_t, var_f) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); - find mustInstanceOfRegion_class(problem,interpretation,container); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); - find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -pattern createObject_Synchronization_class( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_region) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); - find mayInstanceOfSynchronization_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); -} - -////////// -// 4.2 Type refinement -////////// -pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); } -pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); } -pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); } -pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; } -pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); } -pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; } -pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfState_class(problem,interpretation,element); - neg find mustInstanceOfFinalState_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfState_class(problem,interpretation,element); - neg find mustInstanceOfStatechart_class(problem,interpretation,element); - neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); } -pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfVertex_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); } -pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfSynchronization_class(problem,interpretation,element); - neg find mustInstanceOfChoice_class(problem,interpretation,element); - neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); - neg find mustInstanceOfRegion_class(problem,interpretation,element); - neg find mustInstanceOfEntry_class(problem,interpretation,element); - neg find mustInstanceOfExit_class(problem,interpretation,element); - neg find mustInstanceOfTransition_class(problem,interpretation,element); - neg find mustInstanceOfRegularState_class(problem,interpretation,element); - neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); } - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + var_c) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); - PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); - PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfVertex_class(problem,interpretation,from); - find mustInstanceOfTransition_class(problem,interpretation,to); - find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); - neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); -} -import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" - -////////// -// 0. Util -////////// -private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { - PartialInterpretation.problem(interpretation,problem); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); } - -///////////////////////// -// 0.1 Existence -///////////////////////// -private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find interpretation(problem,interpretation); - LogicProblem.elements(problem,element); -} or { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); -} - -private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find mustExist(problem,interpretation,element); -} or { - find interpretation(problem,interpretation); - neg find elementCloseWorld(element); - PartialInterpretation.openWorldElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); } - -private pattern elementCloseWorld(element:DefinedElement) { - PartialInterpretation.openWorldElements(i,element); - PartialInterpretation.maxNewElements(i,0); -} or { - Scope.targetTypeInterpretation(scope,interpretation); - PartialTypeInterpratation.elements(interpretation,element); - Scope.maxNewElements(scope,0); +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); } - -//////////////////////// -// 0.2 Equivalence -//////////////////////// -pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { - find mayExist(problem,interpretation,a); - find mayExist(problem,interpretation,b); - a == b; +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); } - -//////////////////////// -// 0.3 Required Patterns by TypeIndexer -//////////////////////// -private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); } - -private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - TypeDefinition.elements(type,element); -} or { + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - find typeInterpretation(problem,interpretation,type,typeInterpretation); - PartialComplexTypeInterpretation.elements(typeInterpretation,element); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); } - -private pattern isPrimitive(element: PrimitiveElement) { - PrimitiveElement(element); +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); } - -////////// -// 1. Problem-Specific Base Indexers -////////// -// 1.1 Type Indexers -////////// -// 1.1.1 primitive Type Indexers -////////// - -////////// -// 1.1.2 domain-specific Type Indexers -////////// -/** - * An element must be an instance of type "FileSystem class". - */ -private pattern mustInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FileSystem class"); - find directInstanceOf(problem,interpretation,element,type); +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); } -private pattern scopeDisallowsNewFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FileSystem class"); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; } - -/** - * An element may be an instance of type "FileSystem class". - */ -private pattern mayInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFileSystem_class(problem,interpretation,element); } -/** - * An element must be an instance of type "FSObject class". - */ -private pattern mustInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FSObject class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FSObject class"); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); } - -/** - * An element may be an instance of type "FSObject class". - */ -private pattern mayInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFSObject_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Dir class". - */ -private pattern mustInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Dir class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewDir_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Dir class"); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; } - -/** - * An element may be an instance of type "Dir class". - */ -private pattern mayInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfDir_class(problem,interpretation,element); } -/** - * An element must be an instance of type "File class". - */ -private pattern mustInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"File class"); - find directInstanceOf(problem,interpretation,element,type); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); } -private pattern scopeDisallowsNewFile_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"File class"); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); } - -/** - * An element may be an instance of type "File class". - */ -private pattern mayInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFile_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class". - */ -private pattern mustInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class"); - find directInstanceOf(problem,interpretation,element,type); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); } -private pattern scopeDisallowsNewModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class"); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); } - -/** - * An element may be an instance of type "Model class". - */ -private pattern mayInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class DefinedPart". - */ -private pattern mustInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; } -private pattern scopeDisallowsNewModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class DefinedPart"); -} - -/** - * An element may be an instance of type "Model class DefinedPart". - */ -private pattern mayInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class UndefinedPart". - */ -private pattern mustInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; } -private pattern scopeDisallowsNewModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class UndefinedPart"); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); } - -/** - * An element may be an instance of type "Model class UndefinedPart". - */ -private pattern mayInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); } - -////////// -// 1.2 Relation Declaration Indexers -////////// -/** - * Matcher for detecting tuples t where []root reference FileSystem(source,target) - */ -private pattern mustInRelationroot_reference_FileSystem( + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_v) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; } -/** - * Matcher for detecting tuples t where <>root reference FileSystem(source,target) - */ -private pattern mayInRelationroot_reference_FileSystem( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFileSystem_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); } -/** - * Matcher for detecting tuples t where []live reference FileSystem(source,target) - */ - private pattern mustInRelationlive_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []live reference FileSystem(source,target) - */ - private pattern mayInRelationlive_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []parent reference FSObject(source,target) - */ -private pattern mustInRelationparent_reference_FSObject( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FSObject"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; } -/** - * Matcher for detecting tuples t where <>parent reference FSObject(source,target) - */ -private pattern mayInRelationparent_reference_FSObject( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFSObject_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationparent_reference_FSObject(problem,interpretation,source,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; } -/** - * Matcher for detecting tuples t where []contents reference Dir(source,target) - */ -private pattern mustInRelationcontents_reference_Dir( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_parent, var_child) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference Dir"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; } -/** - * Matcher for detecting tuples t where <>contents reference Dir(source,target) - */ -private pattern mayInRelationcontents_reference_Dir( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_parent, var_child) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfDir_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; } -/** - * Matcher for detecting tuples t where []filesystems reference Model(source,target) - */ -private pattern mustInRelationfilesystems_reference_Model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); } -/** - * Matcher for detecting tuples t where <>filesystems reference Model(source,target) - */ -private pattern mayInRelationfilesystems_reference_Model( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFileSystem_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); } -/** - * Matcher for detecting tuples t where []otherFSObjects reference Model(source,target) - */ -private pattern mustInRelationotherFSObjects_reference_Model( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"otherFSObjects reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); } -/** - * Matcher for detecting tuples t where <>otherFSObjects reference Model(source,target) - */ -private pattern mayInRelationotherFSObjects_reference_Model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_composite) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); } - -////////// -// 1.3 Relation Definition Indexers -////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries patternContent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) + var_composite) { find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,var_o1); - find mustInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mustInstanceOfDir_class(problem,interpretation,var_o1); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_o2; + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) + var_composite) { find interpretation(problem,interpretation); - find mayInstanceOfFSObject_class(problem,interpretation,var_o1); - find mayInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mayInstanceOfDir_class(problem,interpretation,var_o1); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_o2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) + var_s) { find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,var_o1); - find mustInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mustInstanceOfDir_class(problem,interpretation,var_o1); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_o2; -} -private pattern twoParam_mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); -} -private pattern twoParam_mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); -} -private pattern twoParam_currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries live -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) + var_s) { find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_l; + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; }or{ find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_root; - find twoParam_mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( - problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mayInstanceOfDir_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_l); -}or{ + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mayInstanceOfDir_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_root); - find twoParam_mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( - problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_l; + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; }or{ find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_root; - find twoParam_currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries contentInNotLive -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + var_s1, var_s2) { find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + var_s1, var_s2) { find interpretation(problem,interpretation); - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_child); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_child); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + var_s1, var_s2) { find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; } ////////// @@ -21511,13 +22745,11 @@ private pattern mustContains2(source: DefinedElement, target: DefinedElement) { private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target: DefinedElement) - { find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); }or + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or - { find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); }or + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or - { find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); } + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } private pattern mustTransitiveContains(source,target) { find mustContains2+(source,target); @@ -21528,10 +22760,95 @@ private pattern mustTransitiveContains(source,target) { ////////// // 2.1 Invalidated by WF Queries ////////// -pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem,interpretation,var_parent,var_child); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); } ////////// @@ -21539,21 +22856,12 @@ pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesys ////////// // 3.1 Unfinishedness Measured by Multiplicity ////////// -pattern unfinishedLowerMultiplicity_root_reference_FileSystem(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_filesystems_reference_Model(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,object,_); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } @@ -21561,3140 +22869,2796 @@ pattern unfinishedLowerMultiplicity_filesystems_reference_Model(problem:LogicPro ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem,interpretation,var_parent,var_child); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); } - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) { - find interpretation(problem,interpretation); - find mustInstanceOfModel_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFile_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfModel_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); } -pattern createObject_FileSystem_class_by_filesystems_reference_Model( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) { - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); - find mayInRelationfilesystems_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); } -pattern createObject_FileSystem_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) { - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); } -pattern createObject_File_class_by_contents_reference_Dir_with_parent_reference_FSObject( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) { - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); } -pattern createObject_File_class_by_otherFSObjects_reference_Model( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); } -pattern createObject_File_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) { - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); } -pattern createObject_Model_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Model class UndefinedPart"); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); } -pattern createObject_Dir_class_by_root_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) { - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationroot_reference_FileSystem(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); } -pattern createObject_Dir_class_by_contents_reference_Dir_with_parent_reference_FSObject( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) { - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); } -pattern createObject_Dir_class_by_otherFSObjects_reference_Model( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { - find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); } -pattern createObject_Dir_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) { - find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); } ////////// -// 4.2 Type refinement +// 4. Refinement Indexers ////////// -pattern refineTypeTo_FileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { - find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); -} -pattern refineTypeTo_File_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); -} -pattern refineTypeTo_Model_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); -} -pattern refineTypeTo_Dir_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); -} - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_live_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"live reference FileSystem"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfFileSystem_class(problem,interpretation,from); - find mustInstanceOfFSObject_class(problem,interpretation,to); - find mayInRelationlive_reference_FileSystem(problem,interpretation,from,to); - neg find mustInRelationlive_reference_FileSystem(problem,interpretation,from,to); -} -import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" - -////////// -// 0. Util -////////// -private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { - PartialInterpretation.problem(interpretation,problem); -} - -///////////////////////// -// 0.1 Existence -///////////////////////// -private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - LogicProblem.elements(problem,element); -} or { + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); -} - -private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find mustExist(problem,interpretation,element); -} or { - find interpretation(problem,interpretation); - neg find elementCloseWorld(element); - PartialInterpretation.openWorldElements(interpretation,element); -} - -private pattern elementCloseWorld(element:DefinedElement) { - PartialInterpretation.openWorldElements(i,element); - PartialInterpretation.maxNewElements(i,0); -} or { - Scope.targetTypeInterpretation(scope,interpretation); - PartialTypeInterpratation.elements(interpretation,element); - Scope.maxNewElements(scope,0); -} - -//////////////////////// -// 0.2 Equivalence -//////////////////////// -pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { - find mayExist(problem,interpretation,a); - find mayExist(problem,interpretation,b); - a == b; -} - -//////////////////////// -// 0.3 Required Patterns by TypeIndexer -//////////////////////// -private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); -} - -private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - TypeDefinition.elements(type,element); -} or { + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - find typeInterpretation(problem,interpretation,type,typeInterpretation); - PartialComplexTypeInterpretation.elements(typeInterpretation,element); -} - -private pattern isPrimitive(element: PrimitiveElement) { - PrimitiveElement(element); -} - -////////// -// 1. Problem-Specific Base Indexers -////////// -// 1.1 Type Indexers -////////// -// 1.1.1 primitive Type Indexers -////////// - -////////// -// 1.1.2 domain-specific Type Indexers -////////// -/** - * An element must be an instance of type "FileSystem class". - */ -private pattern mustInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FileSystem class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FileSystem class"); -} - -/** - * An element may be an instance of type "FileSystem class". - */ -private pattern mayInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); - neg find isPrimitive(element); -} or { + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFileSystem_class(problem,interpretation,element); } -/** - * An element must be an instance of type "FSObject class". - */ -private pattern mustInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FSObject class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FSObject class"); -} - -/** - * An element may be an instance of type "FSObject class". - */ -private pattern mayInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFSObject_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Dir class". - */ -private pattern mustInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Dir class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewDir_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Dir class"); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); } - -/** - * An element may be an instance of type "Dir class". - */ -private pattern mayInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfDir_class(problem,interpretation,element); } -/** - * An element must be an instance of type "File class". - */ -private pattern mustInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"File class"); - find directInstanceOf(problem,interpretation,element,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -private pattern scopeDisallowsNewFile_class(problem:LogicProblem, interpretation:PartialInterpretation) { +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"File class"); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } - -/** - * An element may be an instance of type "File class". - */ -private pattern mayInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFile_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class". - */ -private pattern mustInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class"); - find directInstanceOf(problem,interpretation,element,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -private pattern scopeDisallowsNewModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class"); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } - -/** - * An element may be an instance of type "Model class". - */ -private pattern mayInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class DefinedPart". - */ -private pattern mustInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -private pattern scopeDisallowsNewModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class DefinedPart"); -} - -/** - * An element may be an instance of type "Model class DefinedPart". - */ -private pattern mayInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class UndefinedPart". - */ -private pattern mustInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -private pattern scopeDisallowsNewModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class UndefinedPart"); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } - -/** - * An element may be an instance of type "Model class UndefinedPart". - */ -private pattern mayInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); } - -////////// -// 1.2 Relation Declaration Indexers -////////// -/** - * Matcher for detecting tuples t where []root reference FileSystem(source,target) - */ -private pattern mustInRelationroot_reference_FileSystem( + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>root reference FileSystem(source,target) - */ -private pattern mayInRelationroot_reference_FileSystem( +pattern createObject_State_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFileSystem_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []live reference FileSystem(source,target) - */ - private pattern mustInRelationlive_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []live reference FileSystem(source,target) - */ - private pattern mayInRelationlive_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []parent reference FSObject(source,target) - */ -private pattern mustInRelationparent_reference_FSObject( +pattern createObject_Choice_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FSObject"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>parent reference FSObject(source,target) - */ -private pattern mayInRelationparent_reference_FSObject( +pattern createObject_Choice_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFSObject_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationparent_reference_FSObject(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []contents reference Dir(source,target) - */ -private pattern mustInRelationcontents_reference_Dir( +pattern createObject_Synchronization_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference Dir"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>contents reference Dir(source,target) - */ -private pattern mayInRelationcontents_reference_Dir( +pattern createObject_Synchronization_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfDir_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []filesystems reference Model(source,target) - */ -private pattern mustInRelationfilesystems_reference_Model( +pattern createObject_Exit_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>filesystems reference Model(source,target) - */ -private pattern mayInRelationfilesystems_reference_Model( +pattern createObject_Exit_class( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFileSystem_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where []otherFSObjects reference Model(source,target) - */ -private pattern mustInRelationotherFSObjects_reference_Model( +pattern createObject_Statechart_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"otherFSObjects reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); } -/** - * Matcher for detecting tuples t where <>otherFSObjects reference Model(source,target) - */ -private pattern mayInRelationotherFSObjects_reference_Model( + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); } +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" ////////// -// 1.3 Relation Definition Indexers +// 0. Util ////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries patternContent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,var_o1); - find mustInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mustInstanceOfDir_class(problem,interpretation,var_o1); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_o2; +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) -{ + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - find mayInstanceOfFSObject_class(problem,interpretation,var_o1); - find mayInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mayInstanceOfDir_class(problem,interpretation,var_o1); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_o2); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( - problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) -{ + LogicProblem.elements(problem,element); +} or { find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,var_o1); - find mustInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mustInstanceOfDir_class(problem,interpretation,var_o1); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_o2; + PartialInterpretation.newElements(interpretation,element); } -private pattern twoParam_mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); } -private pattern twoParam_mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); } -private pattern twoParam_currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries live -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( - problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) -{ + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_l; -}or{ + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_root; - find twoParam_mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( - problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mayInstanceOfDir_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_l); -}or{ + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { find interpretation(problem,interpretation); - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mayInstanceOfDir_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_root); - find twoParam_mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( - problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_l; -}or{ + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_root; - find twoParam_currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries contentInNotLive -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( - problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( - problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) -{ - find interpretation(problem,interpretation); - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_child); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_child); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( - problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); -} - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); } - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); }or - - { find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); }or - - { find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); } -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// -pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem,interpretation,var_parent,var_child); -} - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_root_reference_FileSystem(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); } -pattern unfinishedLowerMultiplicity_filesystems_reference_Model(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} - -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) -{ - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem,interpretation,var_parent,var_child); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); } -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - find mustInstanceOfModel_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFile_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfModel_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); } -pattern createObject_Model_class_UndefinedPart( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Model class UndefinedPart"); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); } -pattern createObject_File_class_by_contents_reference_Dir_with_parent_reference_FSObject( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_File_class_by_otherFSObjects_reference_Model( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); } -pattern createObject_File_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); } -pattern createObject_FileSystem_class_by_filesystems_reference_Model( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); - find mayInRelationfilesystems_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_FileSystem_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); } -pattern createObject_Dir_class_by_root_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationroot_reference_FileSystem(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); } -pattern createObject_Dir_class_by_contents_reference_Dir_with_parent_reference_FSObject( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); -} -pattern createObject_Dir_class_by_otherFSObjects_reference_Model( - problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) -{ + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); } -pattern createObject_Dir_class( - problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) -{ +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); } -////////// -// 4.2 Type refinement -////////// -pattern refineTypeTo_Model_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); -} -pattern refineTypeTo_File_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); } -pattern refineTypeTo_FileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); } -pattern refineTypeTo_Dir_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); } - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_live_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) -{ +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"live reference FileSystem"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfFileSystem_class(problem,interpretation,from); - find mustInstanceOfFSObject_class(problem,interpretation,to); - find mayInRelationlive_reference_FileSystem(problem,interpretation,from,to); - neg find mustInRelationlive_reference_FileSystem(problem,interpretation,from,to); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); } -import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" -////////// -// 0. Util -////////// -private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { - PartialInterpretation.problem(interpretation,problem); -} - -///////////////////////// -// 0.1 Existence -///////////////////////// -private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find interpretation(problem,interpretation); - LogicProblem.elements(problem,element); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); } or { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); } - -private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find mustExist(problem,interpretation,element); -} or { - find interpretation(problem,interpretation); - neg find elementCloseWorld(element); - PartialInterpretation.openWorldElements(interpretation,element); +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); } -private pattern elementCloseWorld(element:DefinedElement) { - PartialInterpretation.openWorldElements(i,element); - PartialInterpretation.maxNewElements(i,0); +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); } or { - Scope.targetTypeInterpretation(scope,interpretation); - PartialTypeInterpratation.elements(interpretation,element); + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); } -//////////////////////// -// 0.2 Equivalence -//////////////////////// -pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { - find mayExist(problem,interpretation,a); - find mayExist(problem,interpretation,b); - a == b; +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); } - -//////////////////////// -// 0.3 Required Patterns by TypeIndexer -//////////////////////// -private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); } -private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - TypeDefinition.elements(type,element); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); } or { find interpretation(problem,interpretation); - find typeInterpretation(problem,interpretation,type,typeInterpretation); - PartialComplexTypeInterpretation.elements(typeInterpretation,element); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); } - -private pattern isPrimitive(element: PrimitiveElement) { - PrimitiveElement(element); +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); } -////////// -// 1. Problem-Specific Base Indexers -////////// -// 1.1 Type Indexers -////////// -// 1.1.1 primitive Type Indexers -////////// - -////////// -// 1.1.2 domain-specific Type Indexers -////////// /** - * An element must be an instance of type "FileSystem class". + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". */ -private pattern mustInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FileSystem class"); +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FileSystem class"); + Type.name(type,"Statechart class UndefinedPart"); } /** - * An element may be an instance of type "FileSystem class". + * An element may be an instance of type "Statechart class UndefinedPart". */ -private pattern mayInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or -{ find mustInstanceOfFileSystem_class(problem,interpretation,element); } +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + /** - * An element must be an instance of type "FSObject class". + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". */ -private pattern mustInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FSObject class"); +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); find directInstanceOf(problem,interpretation,element,type); } -private pattern scopeDisallowsNewFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FSObject class"); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "FSObject class". + * Matcher for detecting tuples t where <>target reference Transition(source,target) */ -private pattern mayInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFSObject_class(problem,interpretation,element); } + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} /** - * An element must be an instance of type "Dir class". + * Matcher for detecting tuples t where []source reference Transition(source,target) */ -private pattern mustInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Dir class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewDir_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Dir class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "Dir class". + * Matcher for detecting tuples t where <>source reference Transition(source,target) */ -private pattern mayInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfDir_class(problem,interpretation,element); } + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} /** - * An element must be an instance of type "File class". + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) */ -private pattern mustInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"File class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFile_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"File class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); } - /** - * An element may be an instance of type "File class". + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) */ -private pattern mayInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); } or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFile_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class". - */ -private pattern mustInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class"); - find directInstanceOf(problem,interpretation,element,type); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; } -private pattern scopeDisallowsNewModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class"); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); } - -/** - * An element may be an instance of type "Model class". - */ -private pattern mayInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or { + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class DefinedPart". - */ -private pattern mustInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); } -private pattern scopeDisallowsNewModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class DefinedPart"); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); } - -/** - * An element may be an instance of type "Model class DefinedPart". - */ -private pattern mayInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class UndefinedPart". - */ -private pattern mustInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); } -private pattern scopeDisallowsNewModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class UndefinedPart"); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); } - -/** - * An element may be an instance of type "Model class UndefinedPart". - */ -private pattern mayInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); } - -////////// -// 1.2 Relation Declaration Indexers -////////// -/** - * Matcher for detecting tuples t where []root reference FileSystem(source,target) - */ -private pattern mustInRelationroot_reference_FileSystem( + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_t, var_src, var_trg) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); } -/** - * Matcher for detecting tuples t where <>root reference FileSystem(source,target) - */ -private pattern mayInRelationroot_reference_FileSystem( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_t, var_src, var_trg) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFileSystem_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; } -/** - * Matcher for detecting tuples t where []live reference FileSystem(source,target) - */ - private pattern mustInRelationlive_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []live reference FileSystem(source,target) - */ - private pattern mayInRelationlive_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []parent reference FSObject(source,target) - */ -private pattern mustInRelationparent_reference_FSObject( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_t, var_e) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FSObject"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); } -/** - * Matcher for detecting tuples t where <>parent reference FSObject(source,target) - */ -private pattern mayInRelationparent_reference_FSObject( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_t, var_e) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFSObject_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationparent_reference_FSObject(problem,interpretation,source,target); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); } -/** - * Matcher for detecting tuples t where []contents reference Dir(source,target) - */ -private pattern mustInRelationcontents_reference_Dir( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_t, var_e) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference Dir"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); } -/** - * Matcher for detecting tuples t where <>contents reference Dir(source,target) - */ -private pattern mayInRelationcontents_reference_Dir( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_e) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfDir_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); } -/** - * Matcher for detecting tuples t where []filesystems reference Model(source,target) - */ -private pattern mustInRelationfilesystems_reference_Model( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_e) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); } -/** - * Matcher for detecting tuples t where <>filesystems reference Model(source,target) - */ -private pattern mayInRelationfilesystems_reference_Model( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_e) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFileSystem_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); } -/** - * Matcher for detecting tuples t where []otherFSObjects reference Model(source,target) - */ -private pattern mustInRelationotherFSObjects_reference_Model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_e, var_t1, var_t2) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"otherFSObjects reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); } -/** - * Matcher for detecting tuples t where <>otherFSObjects reference Model(source,target) - */ -private pattern mayInRelationotherFSObjects_reference_Model( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_e, var_t1, var_t2) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; } - -////////// -// 1.3 Relation Definition Indexers -////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries patternContent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) + var_e, var_t1, var_t2) { find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,var_o1); - find mustInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mustInstanceOfDir_class(problem,interpretation,var_o1); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_o2; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) + var_t, var_e) { find interpretation(problem,interpretation); - find mayInstanceOfFSObject_class(problem,interpretation,var_o1); - find mayInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mayInstanceOfDir_class(problem,interpretation,var_o1); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_o2); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) + var_t, var_e) { find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,var_o1); - find mustInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mustInstanceOfDir_class(problem,interpretation,var_o1); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_o2; -} -private pattern twoParam_mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); -} -private pattern twoParam_mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); -} -private pattern twoParam_currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries live -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) + var_t, var_e) { find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_l; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_root; - find twoParam_mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( - problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mayInstanceOfDir_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_l); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mayInstanceOfDir_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_root); - find twoParam_mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( - problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_l; -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_root; - find twoParam_currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries contentInNotLive -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + var_t, var_f) { find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + var_t, var_f) { find interpretation(problem,interpretation); - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_child); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_child); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) -{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); -} - -////////// -// 1.4 Containment Indexer -////////// -private pattern mustContains2(source: DefinedElement, target: DefinedElement) { - find mustContains4(_,_,source,target); -} - -private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target: DefinedElement) - { find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); }or - - { find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); }or - - { find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); } - -private pattern mustTransitiveContains(source,target) { - find mustContains2+(source,target); -} - -////////// -// 2. Invalidation Indexers -////////// -// 2.1 Invalidated by WF Queries -////////// -pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + var_t, var_f) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem,interpretation,var_parent,var_child); -} - -////////// -// 3. Unfinishedness Indexers -////////// -// 3.1 Unfinishedness Measured by Multiplicity -////////// -pattern unfinishedLowerMultiplicity_root_reference_FileSystem(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_filesystems_reference_Model(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} - -////////// -// 3.2 Unfinishedness Measured by WF Queries -////////// -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) -{ - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem,interpretation,var_parent,var_child); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; } - -////////// -// 4. Refinement Indexers -////////// -// 4.1 Object constructors -////////// -private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) { find interpretation(problem,interpretation); - find mustInstanceOfModel_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFile_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfModel_class_DefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,root); - find mustExist(problem, interpretation, root); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); } -pattern createObject_Dir_class_by_root_reference_FileSystem( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_region) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationroot_reference_FileSystem(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); } -pattern createObject_Dir_class_by_contents_reference_Dir_with_parent_reference_FSObject( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_region) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); } -pattern createObject_Dir_class_by_otherFSObjects_reference_Model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_region, var_state) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; } -pattern createObject_Dir_class( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_region, var_state) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); } -pattern createObject_File_class_by_contents_reference_Dir_with_parent_reference_FSObject( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_region, var_state) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; } -pattern createObject_File_class_by_otherFSObjects_reference_Model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_c) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); } -pattern createObject_File_class( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_c) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); } -pattern createObject_Model_class_UndefinedPart( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_c) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Model class UndefinedPart"); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); } -pattern createObject_FileSystem_class_by_filesystems_reference_Model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, - container:DefinedElement) + var_c) { find interpretation(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); - PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); - find mayInRelationfilesystems_reference_Model(problem,interpretation,container,newObject); - find mustExist(problem, interpretation, container); - neg find mustExist(problem, interpretation, newObject); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); } -pattern createObject_FileSystem_class( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( problem:LogicProblem, interpretation:PartialInterpretation, - typeInterpretation:PartialComplexTypeInterpretation) + var_c) { find interpretation(problem,interpretation); - neg find hasElementInContainment(problem,interpretation); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); - find mayExist(problem, interpretation, newObject); - neg find mustExist(problem, interpretation, newObject); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); } - -////////// -// 4.2 Type refinement -////////// -pattern refineTypeTo_Dir_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); } -pattern refineTypeTo_File_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); } -pattern refineTypeTo_Model_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); } -pattern refineTypeTo_FileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); } - -////////// -// 4.3 Relation refinement -////////// -pattern refineRelation_live_reference_FileSystem( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, - from: DefinedElement, to: DefinedElement) + var_s) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"live reference FileSystem"); - find mustExist(problem, interpretation, from); - find mustExist(problem, interpretation, to); - find mustInstanceOfFileSystem_class(problem,interpretation,from); - find mustInstanceOfFSObject_class(problem,interpretation,to); - find mayInRelationlive_reference_FileSystem(problem,interpretation,from,to); - neg find mustInRelationlive_reference_FileSystem(problem,interpretation,from,to); -} -import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" -import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" - -////////// -// 0. Util -////////// -private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { - PartialInterpretation.problem(interpretation,problem); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); } - -///////////////////////// -// 0.1 Existence -///////////////////////// -private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find interpretation(problem,interpretation); - LogicProblem.elements(problem,element); -} or { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); -} - -private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - find mustExist(problem,interpretation,element); -} or { - find interpretation(problem,interpretation); - neg find elementCloseWorld(element); - PartialInterpretation.openWorldElements(interpretation,element); -} - -private pattern elementCloseWorld(element:DefinedElement) { - PartialInterpretation.openWorldElements(i,element); - PartialInterpretation.maxNewElements(i,0); -} or { - Scope.targetTypeInterpretation(scope,interpretation); - PartialTypeInterpratation.elements(interpretation,element); - Scope.maxNewElements(scope,0); -} - -//////////////////////// -// 0.2 Equivalence -//////////////////////// -pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { - find mayExist(problem,interpretation,a); - find mayExist(problem,interpretation,b); - a == b; + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); } - -//////////////////////// -// 0.3 Required Patterns by TypeIndexer -//////////////////////// -private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); } - -private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { - find interpretation(problem,interpretation); - LogicProblem.types(problem,type); - TypeDefinition.elements(type,element); -} or { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ find interpretation(problem,interpretation); - find typeInterpretation(problem,interpretation,type,typeInterpretation); - PartialComplexTypeInterpretation.elements(typeInterpretation,element); -} - -private pattern isPrimitive(element: PrimitiveElement) { - PrimitiveElement(element); -} - -////////// -// 1. Problem-Specific Base Indexers -////////// -// 1.1 Type Indexers -////////// -// 1.1.1 primitive Type Indexers -////////// - -////////// -// 1.1.2 domain-specific Type Indexers -////////// -/** - * An element must be an instance of type "FileSystem class". - */ -private pattern mustInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FileSystem class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FileSystem class"); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; } - -/** - * An element may be an instance of type "FileSystem class". - */ -private pattern mayInstanceOfFileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewFileSystem_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFileSystem_class(problem,interpretation,element); } -/** - * An element must be an instance of type "FSObject class". - */ -private pattern mustInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"FSObject class"); - find directInstanceOf(problem,interpretation,element,type); -} -private pattern scopeDisallowsNewFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"FSObject class"); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); } - -/** - * An element may be an instance of type "FSObject class". - */ -private pattern mayInstanceOfFSObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or { + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFSObject_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFSObject_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Dir class". - */ -private pattern mustInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Dir class"); - find directInstanceOf(problem,interpretation,element,type); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; } -private pattern scopeDisallowsNewDir_class(problem:LogicProblem, interpretation:PartialInterpretation) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Dir class"); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); } - -/** - * An element may be an instance of type "Dir class". - */ -private pattern mayInstanceOfDir_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewDir_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfDir_class(problem,interpretation,element); } -/** - * An element must be an instance of type "File class". - */ -private pattern mustInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"File class"); - find directInstanceOf(problem,interpretation,element,type); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); } -private pattern scopeDisallowsNewFile_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"File class"); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); } - -/** - * An element may be an instance of type "File class". - */ -private pattern mayInstanceOfFile_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find scopeDisallowsNewFile_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfFile_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class". - */ -private pattern mustInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class"); - find directInstanceOf(problem,interpretation,element,type); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); } -private pattern scopeDisallowsNewModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class"); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; } - -/** - * An element may be an instance of type "Model class". - */ -private pattern mayInstanceOfModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class DefinedPart". - */ -private pattern mustInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class DefinedPart"); - find directInstanceOf(problem,interpretation,element,type); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; } -private pattern scopeDisallowsNewModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class DefinedPart"); -} - -/** - * An element may be an instance of type "Model class DefinedPart". - */ -private pattern mayInstanceOfModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) -{ find mustInstanceOfModel_class_DefinedPart(problem,interpretation,element); } -/** - * An element must be an instance of type "Model class UndefinedPart". - */ -private pattern mustInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { - Type.name(type,"Model class UndefinedPart"); - find directInstanceOf(problem,interpretation,element,type); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); } -private pattern scopeDisallowsNewModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ find interpretation(problem,interpretation); - PartialInterpretation.scopes(interpretation,scope); - Scope.targetTypeInterpretation(scope,typeInterpretation); - Scope.maxNewElements(scope,0); - PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); - Type.name(type,"Model class UndefinedPart"); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; } - -/** - * An element may be an instance of type "Model class UndefinedPart". - */ -private pattern mayInstanceOfModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) { find interpretation(problem,interpretation); - PartialInterpretation.newElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or { - find interpretation(problem,interpretation); - PartialInterpretation.openWorldElements(interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); - neg find scopeDisallowsNewModel_class_UndefinedPart(problem, interpretation); - neg find isPrimitive(element); -} or -{ find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); } - -////////// -// 1.2 Relation Declaration Indexers -////////// -/** - * Matcher for detecting tuples t where []root reference FileSystem(source,target) - */ -private pattern mustInRelationroot_reference_FileSystem( + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); } -/** - * Matcher for detecting tuples t where <>root reference FileSystem(source,target) - */ -private pattern mayInRelationroot_reference_FileSystem( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFileSystem_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; } -/** - * Matcher for detecting tuples t where []live reference FileSystem(source,target) - */ - private pattern mustInRelationlive_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []live reference FileSystem(source,target) - */ - private pattern mayInRelationlive_reference_FileSystem( - problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) - { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,source,target); - } -/** - * Matcher for detecting tuples t where []parent reference FSObject(source,target) - */ -private pattern mustInRelationparent_reference_FSObject( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v1, var_v2) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FSObject"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; } -/** - * Matcher for detecting tuples t where <>parent reference FSObject(source,target) - */ -private pattern mayInRelationparent_reference_FSObject( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_parent, var_child) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfFSObject_class(problem,interpretation,source); - find mayInstanceOfDir_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The eOpposite of the reference is containment, then a referene cannot be created if - // 1. Multiple parents - neg find mustContains4(problem,interpretation,source,_); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationparent_reference_FSObject(problem,interpretation,source,target); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; } -/** - * Matcher for detecting tuples t where []contents reference Dir(source,target) - */ -private pattern mustInRelationcontents_reference_Dir( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_parent, var_child) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference Dir"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); } -/** - * Matcher for detecting tuples t where <>contents reference Dir(source,target) - */ -private pattern mayInRelationcontents_reference_Dir( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_parent, var_child) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfDir_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference to the target, - // the upper bound of the opposite reference multiplicity should be considered. - numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FSObject(problem,interpretation,target,_); - check(numberOfExistingOppositeReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; } -/** - * Matcher for detecting tuples t where []filesystems reference Model(source,target) - */ -private pattern mustInRelationfilesystems_reference_Model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); } -/** - * Matcher for detecting tuples t where <>filesystems reference Model(source,target) - */ -private pattern mayInRelationfilesystems_reference_Model( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFileSystem_class(problem,interpretation,target); - // There are "numberOfExistingReferences" currently existing instances of the reference from the source, - // the upper bound of the multiplicity should be considered. - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,source,_); - check(numberOfExistingReferences < 1); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); } -/** - * Matcher for detecting tuples t where []otherFSObjects reference Model(source,target) - */ -private pattern mustInRelationotherFSObjects_reference_Model( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_s, var_v) { find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"otherFSObjects reference Model"); - PartialRelationInterpretation.relationlinks(relationIterpretation,link); - BinaryElementRelationLink.param1(link,source); - BinaryElementRelationLink.param2(link,target); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); } -/** - * Matcher for detecting tuples t where <>otherFSObjects reference Model(source,target) - */ -private pattern mayInRelationotherFSObjects_reference_Model( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - source: DefinedElement, target:DefinedElement) + var_composite) { find interpretation(problem,interpretation); - // The two endpoint of the link have to exist - find mayExist(problem, interpretation, source); - find mayExist(problem, interpretation, target); - // Type consistency - find mayInstanceOfModel_class(problem,interpretation,source); - find mayInstanceOfFSObject_class(problem,interpretation,target); - // The reference is containment, then a new reference cannot be create if: - // 1. Multiple parents - neg find mustContains4(problem,interpretation,_,target); - // 2. Circle in the containment hierarchy - neg find mustTransitiveContains(source,target); -} or { - find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); } - -////////// -// 1.3 Relation Definition Indexers -////////// -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries patternContent -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) + var_composite) { find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,var_o1); - find mustInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mustInstanceOfDir_class(problem,interpretation,var_o1); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_o2; + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) + var_composite) { find interpretation(problem,interpretation); - find mayInstanceOfFSObject_class(problem,interpretation,var_o1); - find mayInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mayInstanceOfDir_class(problem,interpretation,var_o1); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_o2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( problem:LogicProblem, interpretation:PartialInterpretation, - var_o1, var_o2) + var_s) { find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,var_o1); - find mustInstanceOfFSObject_class(problem,interpretation,var_o2); - // o1 is exported - // o2 is exported - find mustInstanceOfDir_class(problem,interpretation,var_o1); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_o1,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_o2; -} -private pattern twoParam_mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); -} -private pattern twoParam_mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); -} -private pattern twoParam_currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(var_o1, var_o2) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent(_,_,var_o1, var_o2); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries live -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) + var_s) { find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_l; + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; }or{ find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_root; - find twoParam_mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); -} -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( - problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) -{ - find interpretation(problem,interpretation); - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mayInstanceOfDir_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_l); -}or{ + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ find interpretation(problem,interpretation); - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mayInstanceOfFileSystem_class(problem,interpretation,var_this); - find mayInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mayInstanceOfDir_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_root); - find twoParam_mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); -} -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live( - problem:LogicProblem, interpretation:PartialInterpretation, - var_this, var_l) -{ - find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_l; + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; }or{ find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInstanceOfFSObject_class(problem,interpretation,var_l); - // this is exported - // l is exported - find mustInstanceOfFileSystem_class(problem,interpretation,var_this); - find mustInRelationroot_reference_FileSystem(problem,interpretation,var_this,var_virtual0); - find mustInstanceOfDir_class(problem,interpretation,var_virtual0); - var_virtual0 == var_root; - find twoParam_currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_patternContent+(var_root,var_l); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; } -// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test filesystem queries contentInNotLive -private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + var_s1, var_s2) { find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); } -private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + var_s1, var_s2) { find interpretation(problem,interpretation); - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_child); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ - find interpretation(problem,interpretation); - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mayInstanceOfDir_class(problem,interpretation,var_parent); - find mayInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mayInstanceOfFSObject_class(problem,interpretation,var_virtual0); - find mayEquivalent(problem, interpretation, var_virtual0, var_child); - neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; } -private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive( +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) + var_s1, var_s2) { find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_parent); -}or{ - find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInstanceOfFSObject_class(problem,interpretation,var_child); - // parent is exported - // child is exported - find mustInstanceOfDir_class(problem,interpretation,var_parent); - find mustInRelationcontents_reference_Dir(problem,interpretation,var_parent,var_virtual0); - find mustInstanceOfFSObject_class(problem,interpretation,var_virtual0); - var_virtual0 == var_child; - neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_live(problem,interpretation,_var__0,var_child); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; } ////////// @@ -24706,13 +25670,11 @@ private pattern mustContains2(source: DefinedElement, target: DefinedElement) { private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target: DefinedElement) - { find mustInRelationroot_reference_FileSystem(problem,interpretation,source,target); }or - - { find mustInRelationcontents_reference_Dir(problem,interpretation,source,target); }or + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or - { find mustInRelationfilesystems_reference_Model(problem,interpretation,source,target); }or + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or - { find mustInRelationotherFSObjects_reference_Model(problem,interpretation,source,target); } + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } private pattern mustTransitiveContains(source,target) { find mustContains2+(source,target); @@ -24723,10 +25685,95 @@ private pattern mustTransitiveContains(source,target) { ////////// // 2.1 Invalidated by WF Queries ////////// -pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) { - find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem,interpretation,var_parent,var_child); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); } ////////// @@ -24734,21 +25781,12 @@ pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesys ////////// // 3.1 Unfinishedness Measured by Multiplicity ////////// -pattern unfinishedLowerMultiplicity_root_reference_FileSystem(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { - find interpretation(problem,interpretation); - PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationroot_reference_FileSystem(problem,interpretation,object,_); - check(numberOfExistingReferences < 1); - missingMultiplicity == eval(1-numberOfExistingReferences); -} -pattern unfinishedLowerMultiplicity_filesystems_reference_Model(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,object); - numberOfExistingReferences == count find mustInRelationfilesystems_reference_Model(problem,interpretation,object,_); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } @@ -24756,10 +25794,95 @@ pattern unfinishedLowerMultiplicity_filesystems_reference_Model(problem:LogicPro ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// -pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem:LogicProblem, interpretation:PartialInterpretation, - var_parent, var_child) +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) { - find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesystem_queries_contentInNotLive(problem,interpretation,var_parent,var_child); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); } ////////// @@ -24770,178 +25893,308 @@ pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_filesyst private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); - find mustInstanceOfModel_class(problem,interpretation,root); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFile_class(problem,interpretation,root); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFSObject_class(problem,interpretation,root); + find mustInstanceOfFinalState_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfFileSystem_class(problem,interpretation,root); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfDir_class(problem,interpretation,root); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfModel_class_DefinedPart(problem,interpretation,root); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); - find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,root); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } -pattern createObject_Dir_class_by_root_reference_FileSystem( +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"root reference FileSystem"); - find mustInstanceOfFileSystem_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationroot_reference_FileSystem(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Dir_class_by_contents_reference_Dir_with_parent_reference_FSObject( +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Dir_class_by_otherFSObjects_reference_Model( +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfDir_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Dir_class( +pattern createObject_State_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Dir class"); - find mayInstanceOfDir_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FileSystem_class_by_filesystems_reference_Model( +pattern createObject_Choice_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"filesystems reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); - find mayInRelationfilesystems_reference_Model(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_FileSystem_class( +pattern createObject_Choice_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FileSystem class"); - find mayInstanceOfFileSystem_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_Model_class_UndefinedPart( +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Model class UndefinedPart"); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_File_class_by_contents_reference_Dir_with_parent_reference_FSObject( +pattern createObject_FinalState_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, - relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference Dir"); - PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); - PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FSObject"); - find mustInstanceOfDir_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationcontents_reference_Dir(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_File_class_by_otherFSObjects_reference_Model( +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); - PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"otherFSObjects reference Model"); - find mustInstanceOfModel_class(problem,interpretation,container); - find mayInstanceOfFile_class(problem,interpretation,newObject); - find mayInRelationotherFSObjects_reference_Model(problem,interpretation,container,newObject); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } -pattern createObject_File_class( +pattern createObject_Synchronization_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"File class"); - find mayInstanceOfFile_class(problem,interpretation,newObject); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } @@ -24949,56 +26202,124 @@ pattern createObject_File_class( ////////// // 4.2 Type refinement ////////// -pattern refineTypeTo_Dir_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); } -pattern refineTypeTo_FileSystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); } -pattern refineTypeTo_Model_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfModel_class_UndefinedPart(problem,interpretation,element); - neg find mustInstanceOfFSObject_class(problem,interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); } -pattern refineTypeTo_File_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); - find mayInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfDir_class(problem,interpretation,element); - neg find mustInstanceOfFileSystem_class(problem,interpretation,element); - neg find mustInstanceOfFile_class(problem,interpretation,element); - neg find mustInstanceOfModel_class(problem,interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); } ////////// // 4.3 Relation refinement ////////// -pattern refineRelation_live_reference_FileSystem( +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( problem:LogicProblem, interpretation:PartialInterpretation, - relationIterpretation:PartialRelationInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); - PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"live reference FileSystem"); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); - find mustInstanceOfFileSystem_class(problem,interpretation,from); - find mustInstanceOfFSObject_class(problem,interpretation,to); - find mayInRelationlive_reference_FileSystem(problem,interpretation,from,to); - neg find mustInRelationlive_reference_FileSystem(problem,interpretation,from,to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); } 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 index 991c88fd..2079fe25 100644 --- 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 @@ -1,23 +1,33 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - + @@ -25,24 +35,24 @@ - + - + - + - + - + - + @@ -56,24 +66,24 @@ - + - + - + - + - + - + @@ -87,220 +97,1358 @@ - + - + - - - - - - - - - - + + + + + + + + + + + + - + - - - - + - - + + - - - - - - - - - - + + + + - - - - - + + + - + - - - - + - - - - - - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - + + - + + - - - + + + + + + + + + + - - + + - + + + + + - - - - - - - - + + + + - - - - - - - - - + + + - - - + + + + + + + + + - - + - - + - - - - - - + + + + + + - + - + - - - - - + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 index 6c0e5571..5479fb8d 100644 --- 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 @@ -1,5 +1,5 @@ - + @@ -37,25 +37,53 @@ - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -66,4 +94,13 @@ + + + + + + + + + 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 index 162931cc..977a3efc 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt @@ -1 +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 finishedModel generation startedProblem is consistent, 2 models are generated!Model generation startedProblem is consistent, 2 models are generated!Model generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is inconsistent, no model is created!Model generation finishedModel generation startedProblem is inconsistent, no model is created!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, 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, 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 +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 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 startedUnable to solve problem, but 0 model generated!Model generation finishedModel generation startedUnable to solve problem, but 0 model generated!Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation 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 index e73f85db..897aa2d4 100644 --- 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 @@ -150,8 +150,8 @@ graph id 4 graphics [ - w 107.80000000000001 - h 40 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -171,7 +171,9 @@ graph LabelGraphics [ text " - Region class + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -186,7 +188,7 @@ graph id 5 graphics [ - w 154.0 + w 146.3 h 68 type "rectangle" fill "#FFFFFF" @@ -207,9 +209,9 @@ graph LabelGraphics [ text " + Pseudostate class Vertex class - RegularState class - FinalState class + Entry class " fontSize 14 fontName "Consolas" @@ -224,8 +226,44 @@ graph id 6 graphics [ - w 154.0 - h 68 + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -246,8 +284,10 @@ graph [ text " Vertex class + State class RegularState class - FinalState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -259,7 +299,7 @@ graph node [ - id 7 + id 8 graphics [ w 112.2 @@ -294,7 +334,7 @@ graph node [ - id 8 + id 9 graphics [ w 85.80000000000001 @@ -329,7 +369,7 @@ graph node [ - id 9 + id 10 graphics [ w 103.4 @@ -364,7 +404,7 @@ graph node [ - id 10 + id 11 graphics [ w 103.4 @@ -399,7 +439,46 @@ graph edge [ source 4 - target 5 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 graphics [ fill "#000000" @@ -419,7 +498,7 @@ graph edge [ source 3 - target 6 + target 5 graphics [ fill "#000000" @@ -438,8 +517,8 @@ graph ] edge [ - source 0 - target 3 + source 3 + target 7 graphics [ fill "#000000" @@ -448,7 +527,7 @@ graph ] LabelGraphics [ - text "regions reference CompositeElement" + text "vertices reference Region" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -458,9 +537,47 @@ graph ] edge [ - source 0 + source 6 target 4 graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics [ fill "#000000" width 3 @@ -593,8 +710,8 @@ graph id 3 graphics [ - w 107.80000000000001 - h 40 + w 112.2 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -602,7 +719,7 @@ graph ] LabelGraphics [ - text "null" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -614,7 +731,6 @@ graph LabelGraphics [ text " - Region class " fontSize 14 fontName "Consolas" @@ -629,8 +745,8 @@ graph id 4 graphics [ - w 292.6 - h 96 + w 85.80000000000001 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -638,7 +754,7 @@ graph ] LabelGraphics [ - text "null" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -650,11 +766,6 @@ graph LabelGraphics [ text " - Vertex class - State class - RegularState class - CompositeElement class - CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -669,8 +780,8 @@ graph id 5 graphics [ - w 146.3 - h 68 + w 103.4 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -678,7 +789,7 @@ graph ] LabelGraphics [ - text "null" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -690,9 +801,6 @@ graph LabelGraphics [ text " - Pseudostate class - Vertex class - Entry class " fontSize 14 fontName "Consolas" @@ -707,8 +815,8 @@ graph id 6 graphics [ - w 138.60000000000002 - h 40 + w 103.4 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -716,7 +824,7 @@ graph ] LabelGraphics [ - text "null" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -728,7 +836,6 @@ graph LabelGraphics [ text " - Transition class " fontSize 14 fontName "Consolas" @@ -737,14 +844,16 @@ graph borderDistance 6 ] ] - +] +graph +[ node [ - id 7 + id 0 graphics [ - w 112.2 - h 26 + w 277.20000000000005 + h 82 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -752,7 +861,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "o 1" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -764,6 +873,10 @@ graph LabelGraphics [ text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class " fontSize 14 fontName "Consolas" @@ -775,10 +888,10 @@ graph node [ - id 8 + id 1 graphics [ - w 85.80000000000001 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -787,7 +900,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -810,10 +923,10 @@ graph node [ - id 9 + id 2 graphics [ - w 103.4 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -822,7 +935,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -845,11 +958,11 @@ graph node [ - id 10 + id 3 graphics [ - w 103.4 - h 26 + w 107.80000000000001 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -857,7 +970,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -869,6 +982,7 @@ graph LabelGraphics [ text " + Region class " fontSize 14 fontName "Consolas" @@ -877,153 +991,52 @@ graph borderDistance 6 ] ] - edge - [ - source 4 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "incomingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 5 - target 6 - graphics + + node [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "outgoingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 4 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "target reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 5 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "source reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "regions reference CompositeElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - ] -] -graph -[ + node [ - id 0 + id 5 graphics [ - w 277.20000000000005 - h 82 + w 154.0 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1031,7 +1044,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1043,10 +1056,9 @@ graph LabelGraphics [ text " - Statechart class DefinedPart - CompositeElement class DefinedPart - Statechart class - CompositeElement class + Vertex class + RegularState class + FinalState class " fontSize 14 fontName "Consolas" @@ -1058,11 +1070,11 @@ graph node [ - id 1 + id 6 graphics [ - w 41.800000000000004 - h 26 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1070,7 +1082,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1082,6 +1094,9 @@ graph LabelGraphics [ text " + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -1093,11 +1108,11 @@ graph node [ - id 2 + id 7 graphics [ - w 50.6 - h 26 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1105,7 +1120,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1117,6 +1132,9 @@ graph LabelGraphics [ text " + Pseudostate class + Vertex class + Entry class " fontSize 14 fontName "Consolas" @@ -1128,10 +1146,10 @@ graph node [ - id 3 + id 8 graphics [ - w 107.80000000000001 + w 138.60000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -1152,7 +1170,7 @@ graph LabelGraphics [ text " - Region class + Transition class " fontSize 14 fontName "Consolas" @@ -1164,11 +1182,11 @@ graph node [ - id 4 + id 9 graphics [ - w 146.3 - h 68 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1188,9 +1206,11 @@ graph LabelGraphics [ text " - Pseudostate class Vertex class - Entry class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -1202,7 +1222,7 @@ graph node [ - id 5 + id 10 graphics [ w 138.60000000000002 @@ -1238,7 +1258,7 @@ graph node [ - id 6 + id 11 graphics [ w 292.6 @@ -1278,7 +1298,7 @@ graph node [ - id 7 + id 12 graphics [ w 138.60000000000002 @@ -1314,11 +1334,11 @@ graph node [ - id 8 + id 13 graphics [ - w 112.2 - h 26 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1326,7 +1346,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1338,6 +1358,11 @@ graph LabelGraphics [ text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -1349,11 +1374,11 @@ graph node [ - id 9 + id 14 graphics [ - w 85.80000000000001 - h 26 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1361,7 +1386,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1373,6 +1398,11 @@ graph LabelGraphics [ text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -1384,11 +1414,11 @@ graph node [ - id 10 + id 15 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1396,7 +1426,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1408,6 +1438,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -1419,11 +1450,11 @@ graph node [ - id 11 + id 16 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1431,7 +1462,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1443,6 +1474,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -1451,230 +1483,14 @@ graph borderDistance 6 ] ] - edge - [ - source 6 - target 7 - graphics + + node [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "incomingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 5 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "incomingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 4 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "outgoingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 6 - target 7 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "outgoingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 7 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "target reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 5 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "target reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 5 - target 4 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "source reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 7 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "source reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "regions reference CompositeElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 + id 17 graphics [ - w 277.20000000000005 - h 82 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1682,7 +1498,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1694,10 +1510,11 @@ graph LabelGraphics [ text " - Statechart class DefinedPart - CompositeElement class DefinedPart - Statechart class + Vertex class + State class + RegularState class CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -1709,11 +1526,11 @@ graph node [ - id 1 + id 18 graphics [ - w 41.800000000000004 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1721,7 +1538,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1733,6 +1550,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -1744,11 +1562,11 @@ graph node [ - id 2 + id 19 graphics [ - w 50.6 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1756,7 +1574,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1768,6 +1586,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -1779,11 +1598,11 @@ graph node [ - id 3 + id 20 graphics [ - w 107.80000000000001 - h 40 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1803,7 +1622,11 @@ graph LabelGraphics [ text " - Region class + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -1815,11 +1638,11 @@ graph node [ - id 4 + id 21 graphics [ - w 154.0 - h 68 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1839,9 +1662,7 @@ graph LabelGraphics [ text " - Vertex class - RegularState class - FinalState class + Transition class " fontSize 14 fontName "Consolas" @@ -1853,7 +1674,7 @@ graph node [ - id 5 + id 22 graphics [ w 146.3 @@ -1879,7 +1700,7 @@ graph text " Pseudostate class Vertex class - Entry class + Exit class " fontSize 14 fontName "Consolas" @@ -1891,11 +1712,11 @@ graph node [ - id 6 + id 23 graphics [ - w 292.6 - h 96 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1915,11 +1736,7 @@ graph LabelGraphics [ text " - Vertex class - State class - RegularState class - CompositeElement class - CompositeElement class UndefinedPart + Transition class " fontSize 14 fontName "Consolas" @@ -1931,11 +1748,11 @@ graph node [ - id 7 + id 24 graphics [ - w 138.60000000000002 - h 40 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1955,7 +1772,9 @@ graph LabelGraphics [ text " - Transition class + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -1967,11 +1786,11 @@ graph node [ - id 8 + id 25 graphics [ - w 112.2 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1979,7 +1798,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1991,6 +1810,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2002,11 +1822,11 @@ graph node [ - id 9 + id 26 graphics [ - w 85.80000000000001 - h 26 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2014,7 +1834,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2026,6 +1846,11 @@ graph LabelGraphics [ text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -2037,11 +1862,11 @@ graph node [ - id 10 + id 27 graphics [ - w 103.4 - h 26 + w 154.0 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2049,7 +1874,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2061,6 +1886,9 @@ graph LabelGraphics [ text " + Vertex class + RegularState class + FinalState class " fontSize 14 fontName "Consolas" @@ -2072,11 +1900,11 @@ graph node [ - id 11 + id 28 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2084,7 +1912,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2096,6 +1924,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2104,173 +1933,14 @@ graph borderDistance 6 ] ] - edge - [ - source 6 - target 7 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "incomingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 5 - target 7 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "outgoingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 7 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "target reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 7 - target 5 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "source reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "regions reference CompositeElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ + node [ - id 0 + id 29 graphics [ - w 277.20000000000005 - h 82 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2278,7 +1948,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2290,10 +1960,7 @@ graph LabelGraphics [ text " - Statechart class DefinedPart - CompositeElement class DefinedPart - Statechart class - CompositeElement class + Transition class " fontSize 14 fontName "Consolas" @@ -2305,11 +1972,11 @@ graph node [ - id 1 + id 30 graphics [ - w 41.800000000000004 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2317,7 +1984,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2329,6 +1996,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2340,11 +2008,11 @@ graph node [ - id 2 + id 31 graphics [ - w 50.6 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2352,7 +2020,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2364,6 +2032,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2375,10 +2044,10 @@ graph node [ - id 3 + id 32 graphics [ - w 107.80000000000001 + w 138.60000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -2399,7 +2068,7 @@ graph LabelGraphics [ text " - Region class + Transition class " fontSize 14 fontName "Consolas" @@ -2411,11 +2080,11 @@ graph node [ - id 4 + id 33 graphics [ - w 146.3 - h 68 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2435,9 +2104,7 @@ graph LabelGraphics [ text " - Pseudostate class - Vertex class - Exit class + Transition class " fontSize 14 fontName "Consolas" @@ -2449,11 +2116,11 @@ graph node [ - id 5 + id 34 graphics [ - w 146.3 - h 68 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2473,9 +2140,7 @@ graph LabelGraphics [ text " - Pseudostate class - Vertex class - Entry class + Transition class " fontSize 14 fontName "Consolas" @@ -2487,11 +2152,11 @@ graph node [ - id 6 + id 35 graphics [ - w 292.6 - h 96 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2511,11 +2176,7 @@ graph LabelGraphics [ text " - Vertex class - State class - RegularState class - CompositeElement class - CompositeElement class UndefinedPart + Transition class " fontSize 14 fontName "Consolas" @@ -2527,11 +2188,11 @@ graph node [ - id 7 + id 36 graphics [ - w 138.60000000000002 - h 40 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2551,7 +2212,9 @@ graph LabelGraphics [ text " - Transition class + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -2563,11 +2226,11 @@ graph node [ - id 8 + id 37 graphics [ - w 112.2 - h 26 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2575,7 +2238,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2587,6 +2250,9 @@ graph LabelGraphics [ text " + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -2598,11 +2264,11 @@ graph node [ - id 9 + id 38 graphics [ - w 85.80000000000001 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2610,7 +2276,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2622,6 +2288,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2633,11 +2300,11 @@ graph node [ - id 10 + id 39 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2645,7 +2312,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2657,6 +2324,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2668,11 +2336,11 @@ graph node [ - id 11 + id 40 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2680,7 +2348,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2692,6 +2360,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2700,173 +2369,14 @@ graph borderDistance 6 ] ] - edge - [ - source 6 - target 7 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "incomingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 5 - target 7 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "outgoingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 7 - target 6 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "target reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 7 - target 5 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "source reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "regions reference CompositeElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ + node [ - id 0 + id 41 graphics [ - w 192.50000000000003 - h 54 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2874,7 +2384,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2886,8 +2396,7 @@ graph LabelGraphics [ text " - Model class DefinedPart - Model class + Transition class " fontSize 14 fontName "Consolas" @@ -2899,11 +2408,11 @@ graph node [ - id 1 + id 42 graphics [ - w 41.800000000000004 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2911,7 +2420,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2923,6 +2432,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2934,11 +2444,11 @@ graph node [ - id 2 + id 43 graphics [ - w 50.6 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2946,7 +2456,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2958,6 +2468,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2969,11 +2480,11 @@ graph node [ - id 3 + id 44 graphics [ - w 123.20000000000002 - h 54 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2993,8 +2504,7 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Transition class " fontSize 14 fontName "Consolas" @@ -3006,11 +2516,11 @@ graph node [ - id 4 + id 45 graphics [ - w 123.20000000000002 - h 54 + w 154.0 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3030,8 +2540,9 @@ graph LabelGraphics [ text " - FSObject class - File class + Vertex class + RegularState class + FinalState class " fontSize 14 fontName "Consolas" @@ -3043,7 +2554,7 @@ graph node [ - id 5 + id 46 graphics [ w 138.60000000000002 @@ -3067,7 +2578,7 @@ graph LabelGraphics [ text " - FileSystem class + Transition class " fontSize 14 fontName "Consolas" @@ -3079,11 +2590,11 @@ graph node [ - id 6 + id 47 graphics [ - w 123.20000000000002 - h 54 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3103,8 +2614,11 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -3116,11 +2630,11 @@ graph node [ - id 7 + id 48 graphics [ - w 112.2 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3128,7 +2642,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3140,6 +2654,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -3151,11 +2666,11 @@ graph node [ - id 8 + id 49 graphics [ - w 85.80000000000001 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3163,7 +2678,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3175,6 +2690,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -3186,11 +2702,11 @@ graph node [ - id 9 + id 50 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3198,7 +2714,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3210,6 +2726,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -3221,11 +2738,11 @@ graph node [ - id 10 + id 51 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3233,7 +2750,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3245,6 +2762,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -3253,96 +2771,14 @@ graph borderDistance 6 ] ] - edge - [ - source 5 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "root reference FileSystem" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "filesystems reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "otherFSObjects reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "otherFSObjects reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ + node [ - id 0 + id 52 graphics [ - w 192.50000000000003 - h 54 + w 112.2 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3350,7 +2786,7 @@ graph ] LabelGraphics [ - text "o 1" + text "New Integers" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3362,8 +2798,6 @@ graph LabelGraphics [ text " - Model class DefinedPart - Model class " fontSize 14 fontName "Consolas" @@ -3375,10 +2809,10 @@ graph node [ - id 1 + id 53 graphics [ - w 41.800000000000004 + w 85.80000000000001 h 26 type "rectangle" fill "#FFFFFF" @@ -3387,7 +2821,7 @@ graph ] LabelGraphics [ - text "true" + text "New Reals" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3410,10 +2844,10 @@ graph node [ - id 2 + id 54 graphics [ - w 50.6 + w 103.4 h 26 type "rectangle" fill "#FFFFFF" @@ -3422,7 +2856,7 @@ graph ] LabelGraphics [ - text "false" + text "New Strings" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3445,11 +2879,11 @@ graph node [ - id 3 + id 55 graphics [ - w 123.20000000000002 - h 54 + w 103.4 + h 26 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3457,7 +2891,7 @@ graph ] LabelGraphics [ - text "null" + text "New Objects" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3469,8 +2903,6 @@ graph LabelGraphics [ text " - FSObject class - File class " fontSize 14 fontName "Consolas" @@ -3479,108 +2911,8333 @@ graph borderDistance 6 ] ] - - node + edge + [ + source 5 + target 8 + graphics [ - id 4 - graphics - [ - w 138.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FileSystem class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 5 - graphics - [ - w 123.20000000000002 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FSObject class - Dir class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 4 + target 10 + graphics [ - id 6 - graphics - [ - w 123.20000000000002 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 12 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 15 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 16 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 19 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 21 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 28 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 29 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 30 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 31 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 32 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 24 + target 33 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 38 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 40 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 39 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 41 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 42 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 43 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 24 + target 44 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 46 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 48 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 49 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 50 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 51 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 15 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 16 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 18 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 19 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 21 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 23 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 25 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 28 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 29 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 30 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 31 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 32 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 33 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 34 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 35 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 38 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 39 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 40 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 41 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 42 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 43 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 44 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 46 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 48 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 49 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 50 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 51 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 13 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 14 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 17 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 20 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 22 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 24 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 26 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 27 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 36 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 37 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 45 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 47 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 12 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 15 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 16 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 30 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 24 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 24 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 45 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 12 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 15 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 16 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 30 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 47 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 47 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 16 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 17 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 18 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 19 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 20 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 21 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 22 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 23 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 24 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 25 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 26 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 27 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 28 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 29 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 30 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 31 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 32 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 33 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 34 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 35 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 36 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 37 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 38 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 39 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 40 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 41 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 42 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 43 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 44 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 45 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 46 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 47 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 48 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 49 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 50 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 51 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 52 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 53 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 54 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 55 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 4 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 21 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 28 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 29 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 31 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 36 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 37 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 38 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 40 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 39 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 42 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 43 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 44 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 45 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 46 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 47 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 48 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 49 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 50 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 51 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 13 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 21 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 22 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 26 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 28 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 29 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 31 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 36 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 37 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 38 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 39 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 40 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 42 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 43 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 44 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 45 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 46 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 47 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 48 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 49 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 50 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 51 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 14 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 15 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 16 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 17 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 18 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 19 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 20 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 23 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 24 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 25 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 27 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 30 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 32 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 33 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 34 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 35 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 41 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 36 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 37 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 33 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 32 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 19 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 36 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 37 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 41 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] LabelGraphics [ text " - FSObject class - Dir class + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -3592,7 +11249,119 @@ graph node [ - id 7 + id 9 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 graphics [ w 112.2 @@ -3627,7 +11396,7 @@ graph node [ - id 8 + id 13 graphics [ w 85.80000000000001 @@ -3662,7 +11431,7 @@ graph node [ - id 9 + id 14 graphics [ w 103.4 @@ -3697,7 +11466,7 @@ graph node [ - id 10 + id 15 graphics [ w 103.4 @@ -3731,8 +11500,165 @@ graph ] edge [ - source 4 - target 6 + source 5 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 graphics [ fill "#000000" @@ -3741,7 +11667,7 @@ graph ] LabelGraphics [ - text "root reference FileSystem" + text "vertices reference Region" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3751,8 +11677,8 @@ graph ] edge [ - source 0 - target 4 + source 3 + target 9 graphics [ fill "#000000" @@ -3761,7 +11687,7 @@ graph ] LabelGraphics [ - text "filesystems reference Model" + text "vertices reference Region" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3771,8 +11697,8 @@ graph ] edge [ - source 0 - target 3 + source 3 + target 10 graphics [ fill "#000000" @@ -3781,7 +11707,7 @@ graph ] LabelGraphics [ - text "otherFSObjects reference Model" + text "vertices reference Region" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3791,17 +11717,16 @@ graph ] edge [ - source 0 + source 7 target 5 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "otherFSObjects reference Model" + text "target reference Transition" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3809,233 +11734,131 @@ graph position "thead" ] ] -] -graph -[ - node + edge + [ + source 11 + target 8 + graphics [ - id 0 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - Model class DefinedPart - Model class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 6 + target 9 + graphics [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 3 - graphics - [ - w 123.20000000000002 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FSObject class - File class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 6 + target 5 + graphics [ - id 4 - graphics - [ - w 123.20000000000002 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FSObject class - File class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 11 + target 10 + graphics [ - id 5 - graphics - [ - w 138.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FileSystem class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 6 + id 0 graphics [ - w 123.20000000000002 - h 54 + w 277.20000000000005 + h 82 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4043,7 +11866,7 @@ graph ] LabelGraphics [ - text "null" + text "o 1" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4055,8 +11878,10 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class " fontSize 14 fontName "Consolas" @@ -4068,10 +11893,10 @@ graph node [ - id 7 + id 1 graphics [ - w 112.2 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -4080,7 +11905,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4103,10 +11928,10 @@ graph node [ - id 8 + id 2 graphics [ - w 85.80000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -4115,7 +11940,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4138,11 +11963,11 @@ graph node [ - id 9 + id 3 graphics [ - w 103.4 - h 26 + w 107.80000000000001 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4150,7 +11975,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4162,6 +11987,7 @@ graph LabelGraphics [ text " + Region class " fontSize 14 fontName "Consolas" @@ -4173,11 +11999,11 @@ graph node [ - id 10 + id 4 graphics [ - w 103.4 - h 26 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4185,7 +12011,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4197,6 +12023,9 @@ graph LabelGraphics [ text " + Pseudostate class + Vertex class + Entry class " fontSize 14 fontName "Consolas" @@ -4205,96 +12034,14 @@ graph borderDistance 6 ] ] - edge - [ - source 5 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "root reference FileSystem" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "filesystems reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "otherFSObjects reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "otherFSObjects reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ + node [ - id 0 + id 5 graphics [ - w 192.50000000000003 - h 54 + w 154.0 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4302,7 +12049,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4314,8 +12061,9 @@ graph LabelGraphics [ text " - Model class DefinedPart - Model class + Vertex class + RegularState class + FinalState class " fontSize 14 fontName "Consolas" @@ -4327,11 +12075,11 @@ graph node [ - id 1 + id 6 graphics [ - w 41.800000000000004 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4339,7 +12087,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4351,6 +12099,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -4362,11 +12111,11 @@ graph node [ - id 2 + id 7 graphics [ - w 50.6 - h 26 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4374,7 +12123,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -4386,6 +12135,9 @@ graph LabelGraphics [ text " + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -4397,11 +12149,11 @@ graph node [ - id 3 + id 8 graphics [ - w 138.60000000000002 - h 40 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4421,7 +12173,11 @@ graph LabelGraphics [ text " - FileSystem class + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -4433,11 +12189,11 @@ graph node [ - id 4 + id 9 graphics [ - w 123.20000000000002 - h 54 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4457,8 +12213,11 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -4470,11 +12229,11 @@ graph node [ - id 5 + id 10 graphics [ - w 123.20000000000002 - h 54 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4494,8 +12253,7 @@ graph LabelGraphics [ text " - FSObject class - File class + Transition class " fontSize 14 fontName "Consolas" @@ -4507,11 +12265,11 @@ graph node [ - id 6 + id 11 graphics [ - w 123.20000000000002 - h 54 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -4531,8 +12289,7 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Transition class " fontSize 14 fontName "Consolas" @@ -4544,7 +12301,7 @@ graph node [ - id 7 + id 12 graphics [ w 112.2 @@ -4579,7 +12336,7 @@ graph node [ - id 8 + id 13 graphics [ w 85.80000000000001 @@ -4614,7 +12371,7 @@ graph node [ - id 9 + id 14 graphics [ w 103.4 @@ -4649,7 +12406,7 @@ graph node [ - id 10 + id 15 graphics [ w 103.4 @@ -4682,6 +12439,123 @@ graph ] ] edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 4 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge [ source 3 target 4 @@ -4693,7 +12567,7 @@ graph ] LabelGraphics [ - text "root reference FileSystem" + text "vertices reference Region" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4703,16 +12577,17 @@ graph ] edge [ - source 6 - target 4 + source 3 + target 5 graphics [ fill "#000000" + width 3 targetArrow "standard" ] LabelGraphics [ - text "parent reference FSObject" + text "vertices reference Region" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4722,8 +12597,8 @@ graph ] edge [ - source 4 - target 6 + source 3 + target 7 graphics [ fill "#000000" @@ -4732,7 +12607,7 @@ graph ] LabelGraphics [ - text "contents reference Dir" + text "vertices reference Region" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4742,8 +12617,28 @@ graph ] edge [ - source 0 - target 3 + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 graphics [ fill "#000000" @@ -4752,7 +12647,7 @@ graph ] LabelGraphics [ - text "filesystems reference Model" + text "vertices reference Region" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4762,9 +12657,123 @@ graph ] edge [ - source 0 + source 6 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 target 5 graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics [ fill "#000000" width 3 @@ -4772,7 +12781,7 @@ graph ] LabelGraphics [ - text "otherFSObjects reference Model" + text "regions reference CompositeElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" 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 index 605b244d..0b9199f4 100644 Binary files a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.png and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.png 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 index ffc48f68..8136fd72 100644 --- 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 @@ -1,9 +1,15 @@ - - - - - - - - + + + + + + + + + + + + + + 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 index 57d704cf..77878c2e 100644 --- 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 @@ -150,8 +150,8 @@ graph id 4 graphics [ - w 107.80000000000001 - h 40 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -171,7 +171,9 @@ graph LabelGraphics [ text " - Region class + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -186,7 +188,7 @@ graph id 5 graphics [ - w 154.0 + w 146.3 h 68 type "rectangle" fill "#FFFFFF" @@ -207,9 +209,9 @@ graph LabelGraphics [ text " + Pseudostate class Vertex class - RegularState class - FinalState class + Entry class " fontSize 14 fontName "Consolas" @@ -224,8 +226,8 @@ graph id 6 graphics [ - w 177.10000000000002 - h 68 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -245,9 +247,7 @@ graph LabelGraphics [ text " - Pseudostate class - Vertex class - Synchronization class + Transition class " fontSize 14 fontName "Consolas" @@ -261,6 +261,46 @@ graph [ id 7 graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics [ w 112.2 h 26 @@ -294,7 +334,7 @@ graph node [ - id 8 + id 9 graphics [ w 85.80000000000001 @@ -329,7 +369,7 @@ graph node [ - id 9 + id 10 graphics [ w 103.4 @@ -364,7 +404,7 @@ graph node [ - id 10 + id 11 graphics [ w 103.4 @@ -398,8 +438,47 @@ graph ] edge [ - source 4 - target 5 + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 graphics [ fill "#000000" @@ -419,7 +498,7 @@ graph edge [ source 3 - target 6 + target 5 graphics [ fill "#000000" @@ -438,8 +517,8 @@ graph ] edge [ - source 0 - target 3 + source 3 + target 7 graphics [ fill "#000000" @@ -448,7 +527,45 @@ graph ] LabelGraphics [ - text "regions reference CompositeElement" + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -459,7 +576,7 @@ graph edge [ source 0 - target 4 + target 3 graphics [ fill "#000000" @@ -652,7 +769,7 @@ graph text " Pseudostate class Vertex class - Entry class + Exit class " fontSize 14 fontName "Consolas" @@ -667,8 +784,8 @@ graph id 5 graphics [ - w 138.60000000000002 - h 40 + w 154.0 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -688,7 +805,9 @@ graph LabelGraphics [ text " - Transition class + Vertex class + RegularState class + FinalState class " fontSize 14 fontName "Consolas" @@ -703,8 +822,8 @@ graph id 6 graphics [ - w 292.6 - h 96 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -724,11 +843,9 @@ graph LabelGraphics [ text " + Pseudostate class Vertex class - State class - RegularState class - CompositeElement class - CompositeElement class UndefinedPart + Exit class " fontSize 14 fontName "Consolas" @@ -766,7 +883,7 @@ graph text " Pseudostate class Vertex class - Exit class + Entry class " fontSize 14 fontName "Consolas" @@ -781,8 +898,8 @@ graph id 8 graphics [ - w 112.2 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -790,7 +907,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -802,6 +919,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -816,8 +934,8 @@ graph id 9 graphics [ - w 85.80000000000001 - h 26 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -825,7 +943,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -837,6 +955,11 @@ graph LabelGraphics [ text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -851,8 +974,8 @@ graph id 10 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -860,7 +983,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -872,6 +995,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -886,8 +1010,8 @@ graph id 11 graphics [ - w 103.4 - h 26 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -895,7 +1019,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -907,6 +1031,11 @@ graph LabelGraphics [ text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -915,173 +1044,50 @@ graph borderDistance 6 ] ] - edge - [ - source 7 - target 5 - graphics + + node [ - fill "#000000" - targetArrow "standard" + id 12 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] - LabelGraphics + + node [ - text "incomingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 4 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "outgoingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 7 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 5 - target 7 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "target reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 5 - target 4 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "source reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "regions reference CompositeElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 + id 13 graphics [ - w 277.20000000000005 - h 82 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1089,7 +1095,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1101,10 +1107,11 @@ graph LabelGraphics [ text " - Statechart class DefinedPart - CompositeElement class DefinedPart - Statechart class + Vertex class + State class + RegularState class CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -1116,11 +1123,11 @@ graph node [ - id 1 + id 14 graphics [ - w 41.800000000000004 - h 26 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1128,7 +1135,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1140,6 +1147,11 @@ graph LabelGraphics [ text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -1151,11 +1163,11 @@ graph node [ - id 2 + id 15 graphics [ - w 50.6 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1163,7 +1175,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1175,6 +1187,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -1186,10 +1199,10 @@ graph node [ - id 3 + id 16 graphics [ - w 107.80000000000001 + w 138.60000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -1210,7 +1223,7 @@ graph LabelGraphics [ text " - Region class + Transition class " fontSize 14 fontName "Consolas" @@ -1222,11 +1235,11 @@ graph node [ - id 4 + id 17 graphics [ - w 154.0 - h 68 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1247,8 +1260,10 @@ graph [ text " Vertex class + State class RegularState class - FinalState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -1260,11 +1275,11 @@ graph node [ - id 5 + id 18 graphics [ - w 146.3 - h 68 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1284,9 +1299,7 @@ graph LabelGraphics [ text " - Pseudostate class - Vertex class - Entry class + Transition class " fontSize 14 fontName "Consolas" @@ -1298,11 +1311,11 @@ graph node [ - id 6 + id 19 graphics [ - w 292.6 - h 96 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1322,11 +1335,7 @@ graph LabelGraphics [ text " - Vertex class - State class - RegularState class - CompositeElement class - CompositeElement class UndefinedPart + Transition class " fontSize 14 fontName "Consolas" @@ -1338,11 +1347,11 @@ graph node [ - id 7 + id 20 graphics [ - w 138.60000000000002 - h 40 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1362,7 +1371,11 @@ graph LabelGraphics [ text " - Transition class + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -1374,11 +1387,11 @@ graph node [ - id 8 + id 21 graphics [ - w 112.2 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1386,7 +1399,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1398,6 +1411,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -1409,11 +1423,11 @@ graph node [ - id 9 + id 22 graphics [ - w 85.80000000000001 - h 26 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1421,7 +1435,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1433,6 +1447,9 @@ graph LabelGraphics [ text " + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -1444,11 +1461,11 @@ graph node [ - id 10 + id 23 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1456,7 +1473,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1468,6 +1485,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -1479,11 +1497,11 @@ graph node [ - id 11 + id 24 graphics [ - w 103.4 - h 26 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1491,7 +1509,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1503,6 +1521,9 @@ graph LabelGraphics [ text " + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -1511,173 +1532,14 @@ graph borderDistance 6 ] ] - edge - [ - source 4 - target 7 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "incomingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 5 - target 7 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "outgoingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 7 - target 4 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "target reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 7 - target 5 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "source reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "regions reference CompositeElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ + node [ - id 0 + id 25 graphics [ - w 277.20000000000005 - h 82 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1685,7 +1547,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1697,10 +1559,7 @@ graph LabelGraphics [ text " - Statechart class DefinedPart - CompositeElement class DefinedPart - Statechart class - CompositeElement class + Transition class " fontSize 14 fontName "Consolas" @@ -1712,11 +1571,11 @@ graph node [ - id 1 + id 26 graphics [ - w 41.800000000000004 - h 26 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1724,7 +1583,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1736,6 +1595,11 @@ graph LabelGraphics [ text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -1747,11 +1611,11 @@ graph node [ - id 2 + id 27 graphics [ - w 50.6 - h 26 + w 154.0 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1759,7 +1623,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1771,6 +1635,9 @@ graph LabelGraphics [ text " + Vertex class + RegularState class + FinalState class " fontSize 14 fontName "Consolas" @@ -1782,10 +1649,10 @@ graph node [ - id 3 + id 28 graphics [ - w 107.80000000000001 + w 138.60000000000002 h 40 type "rectangle" fill "#FFFFFF" @@ -1806,7 +1673,7 @@ graph LabelGraphics [ text " - Region class + Transition class " fontSize 14 fontName "Consolas" @@ -1818,11 +1685,11 @@ graph node [ - id 4 + id 29 graphics [ - w 146.3 - h 68 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1842,9 +1709,7 @@ graph LabelGraphics [ text " - Pseudostate class - Vertex class - Exit class + Transition class " fontSize 14 fontName "Consolas" @@ -1856,11 +1721,11 @@ graph node [ - id 5 + id 30 graphics [ - w 146.3 - h 68 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1880,9 +1745,7 @@ graph LabelGraphics [ text " - Pseudostate class - Vertex class - Entry class + Transition class " fontSize 14 fontName "Consolas" @@ -1894,11 +1757,11 @@ graph node [ - id 6 + id 31 graphics [ - w 292.6 - h 96 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1918,11 +1781,7 @@ graph LabelGraphics [ text " - Vertex class - State class - RegularState class - CompositeElement class - CompositeElement class UndefinedPart + Transition class " fontSize 14 fontName "Consolas" @@ -1934,7 +1793,7 @@ graph node [ - id 7 + id 32 graphics [ w 138.60000000000002 @@ -1970,11 +1829,11 @@ graph node [ - id 8 + id 33 graphics [ - w 112.2 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -1982,7 +1841,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -1994,6 +1853,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2005,11 +1865,11 @@ graph node [ - id 9 + id 34 graphics [ - w 85.80000000000001 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2017,7 +1877,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2029,6 +1889,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2040,11 +1901,11 @@ graph node [ - id 10 + id 35 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2052,7 +1913,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2064,6 +1925,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2075,11 +1937,11 @@ graph node [ - id 11 + id 36 graphics [ - w 103.4 - h 26 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2087,7 +1949,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2099,6 +1961,9 @@ graph LabelGraphics [ text " + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -2107,173 +1972,14 @@ graph borderDistance 6 ] ] - edge - [ - source 4 - target 7 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "incomingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 5 - target 7 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "outgoingTransitions reference Vertex" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 3 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "vertices reference Region" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 7 - target 4 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "target reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 7 - target 5 - graphics - [ - fill "#000000" - targetArrow "standard" - ] - LabelGraphics - [ - text "source reference Transition" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "regions reference CompositeElement" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ + node [ - id 0 + id 37 graphics [ - w 192.50000000000003 - h 54 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2281,7 +1987,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2293,8 +1999,9 @@ graph LabelGraphics [ text " - Model class DefinedPart - Model class + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -2306,11 +2013,11 @@ graph node [ - id 1 + id 38 graphics [ - w 41.800000000000004 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2318,7 +2025,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2330,6 +2037,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2341,11 +2049,11 @@ graph node [ - id 2 + id 39 graphics [ - w 50.6 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2353,7 +2061,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2365,6 +2073,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2376,11 +2085,11 @@ graph node [ - id 3 + id 40 graphics [ - w 123.20000000000002 - h 54 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2400,8 +2109,7 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Transition class " fontSize 14 fontName "Consolas" @@ -2413,7 +2121,7 @@ graph node [ - id 4 + id 41 graphics [ w 138.60000000000002 @@ -2437,7 +2145,7 @@ graph LabelGraphics [ text " - FileSystem class + Transition class " fontSize 14 fontName "Consolas" @@ -2449,11 +2157,11 @@ graph node [ - id 5 + id 42 graphics [ - w 123.20000000000002 - h 54 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2473,8 +2181,7 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Transition class " fontSize 14 fontName "Consolas" @@ -2486,11 +2193,11 @@ graph node [ - id 6 + id 43 graphics [ - w 123.20000000000002 - h 54 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2510,8 +2217,7 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Transition class " fontSize 14 fontName "Consolas" @@ -2523,11 +2229,11 @@ graph node [ - id 7 + id 44 graphics [ - w 112.2 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2535,7 +2241,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2547,6 +2253,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2558,11 +2265,11 @@ graph node [ - id 8 + id 45 graphics [ - w 85.80000000000001 - h 26 + w 154.0 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2570,7 +2277,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2582,6 +2289,9 @@ graph LabelGraphics [ text " + Vertex class + RegularState class + FinalState class " fontSize 14 fontName "Consolas" @@ -2593,11 +2303,11 @@ graph node [ - id 9 + id 46 graphics [ - w 103.4 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2605,7 +2315,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2617,6 +2327,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -2628,11 +2339,11 @@ graph node [ - id 10 + id 47 graphics [ - w 103.4 - h 26 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2640,196 +2351,7 @@ graph ] LabelGraphics [ - text "New Objects" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - edge - [ - source 4 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "root reference FileSystem" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "filesystems reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "otherFSObjects reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "otherFSObjects reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ - node - [ - id 0 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - Model class DefinedPart - Model class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] - ] - - node - [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -2841,6 +2363,11 @@ graph LabelGraphics [ text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -2852,11 +2379,11 @@ graph node [ - id 3 + id 48 graphics [ - w 123.20000000000002 - h 54 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2876,8 +2403,7 @@ graph LabelGraphics [ text " - FSObject class - File class + Transition class " fontSize 14 fontName "Consolas" @@ -2889,7 +2415,7 @@ graph node [ - id 4 + id 49 graphics [ w 138.60000000000002 @@ -2913,7 +2439,7 @@ graph LabelGraphics [ text " - FileSystem class + Transition class " fontSize 14 fontName "Consolas" @@ -2925,11 +2451,11 @@ graph node [ - id 5 + id 50 graphics [ - w 123.20000000000002 - h 54 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2949,8 +2475,7 @@ graph LabelGraphics [ text " - FSObject class - File class + Transition class " fontSize 14 fontName "Consolas" @@ -2962,11 +2487,11 @@ graph node [ - id 6 + id 51 graphics [ - w 123.20000000000002 - h 54 + w 154.0 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -2986,8 +2511,9 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Vertex class + RegularState class + FinalState class " fontSize 14 fontName "Consolas" @@ -2999,7 +2525,7 @@ graph node [ - id 7 + id 52 graphics [ w 112.2 @@ -3034,7 +2560,7 @@ graph node [ - id 8 + id 53 graphics [ w 85.80000000000001 @@ -3069,7 +2595,7 @@ graph node [ - id 9 + id 54 graphics [ w 103.4 @@ -3104,7 +2630,7 @@ graph node [ - id 10 + id 55 graphics [ w 103.4 @@ -3138,17 +2664,16 @@ graph ] edge [ - source 4 - target 6 + source 5 + target 8 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "root reference FileSystem" + text "incomingTransitions reference Vertex" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3158,17 +2683,16 @@ graph ] edge [ - source 0 - target 4 + source 4 + target 10 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "filesystems reference Model" + text "incomingTransitions reference Vertex" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3178,17 +2702,16 @@ graph ] edge [ - source 0 - target 3 + source 11 + target 12 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "otherFSObjects reference Model" + text "incomingTransitions reference Vertex" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3198,17 +2721,16 @@ graph ] edge [ - source 0 - target 5 + source 11 + target 15 graphics [ fill "#000000" - width 3 targetArrow "standard" ] LabelGraphics [ - text "otherFSObjects reference Model" + text "incomingTransitions reference Vertex" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -3216,233 +2738,8768 @@ graph position "thead" ] ] -] -graph -[ - node + edge + [ + source 11 + target 18 + graphics [ - id 0 - graphics - [ - w 192.50000000000003 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "o 1" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - Model class DefinedPart - Model class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 16 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 19 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 21 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 28 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 29 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 30 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 31 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 32 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 24 + target 33 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 38 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 40 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 39 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 41 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 42 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 43 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 24 + target 44 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 46 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 48 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 49 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 50 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 15 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 16 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 18 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 19 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 21 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 23 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 25 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 28 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 29 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 30 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 31 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 32 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 33 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 34 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 35 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 38 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 39 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 40 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 41 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 42 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 43 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 44 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 46 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 48 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 49 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 50 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 13 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 14 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 17 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 20 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 22 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 24 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 26 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 27 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 36 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 37 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 45 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 47 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 51 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 12 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 15 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 16 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 30 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 24 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 24 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 45 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 12 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 15 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 16 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 30 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 47 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 16 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 17 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 18 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 19 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 20 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 21 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 22 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 23 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 24 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 25 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 26 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 27 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 28 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 29 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 30 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 31 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 32 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 33 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 34 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 35 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 36 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 37 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 38 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 39 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 40 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 41 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 42 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 43 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 44 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 45 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 46 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 47 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 48 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 49 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 50 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 51 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 52 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 53 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 54 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 55 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 4 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 21 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 28 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 29 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 31 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 36 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 37 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 38 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 40 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 39 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 42 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 43 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 44 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 45 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 46 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 47 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 48 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 49 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 50 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 51 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 13 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 21 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 22 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 26 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 28 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 29 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 31 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 36 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 37 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 38 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 39 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 40 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 42 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 43 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 44 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 45 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 46 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 47 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 48 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 49 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 50 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 51 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 14 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 15 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 16 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 17 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 18 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 19 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 20 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 23 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 24 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 25 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 27 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 30 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 32 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 33 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 34 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 35 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 41 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 36 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 37 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 33 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 32 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 19 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 33 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 36 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 37 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 41 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] ] node [ - id 1 - graphics - [ - w 41.800000000000004 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "true" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 3 + target 5 + graphics [ - id 2 - graphics - [ - w 50.6 - h 26 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "false" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + width 3 + targetArrow "standard" ] - - node + LabelGraphics [ - id 3 - graphics - [ - w 123.20000000000002 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FSObject class - File class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" ] - - node + LabelGraphics [ - id 4 - graphics - [ - w 138.60000000000002 - h 40 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FileSystem class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" ] - - node + ] + edge + [ + source 11 + target 10 + graphics [ - id 5 - graphics - [ - w 123.20000000000002 - h 54 - type "rectangle" - fill "#FFFFFF" - fill2 "#FFFFFF" - outline "#000000" - ] - LabelGraphics - [ - text "null" - outline "#000000" - fill "#FFFFFF" - fontSize 16 - fontName "Monospace" - autoSizePolicy "node_width" - anchor "t" - borderDistance 0.0 - ] - LabelGraphics - [ - text " - FSObject class - Dir class - " - fontSize 14 - fontName "Consolas" - alignment "left" - anchor "tl" - borderDistance 6 - ] + fill "#000000" + targetArrow "standard" ] - + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ node [ - id 6 + id 0 graphics [ - w 123.20000000000002 - h 54 + w 277.20000000000005 + h 82 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3450,7 +11507,7 @@ graph ] LabelGraphics [ - text "null" + text "o 1" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3462,8 +11519,10 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class " fontSize 14 fontName "Consolas" @@ -3475,10 +11534,10 @@ graph node [ - id 7 + id 1 graphics [ - w 112.2 + w 41.800000000000004 h 26 type "rectangle" fill "#FFFFFF" @@ -3487,7 +11546,7 @@ graph ] LabelGraphics [ - text "New Integers" + text "true" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3510,10 +11569,10 @@ graph node [ - id 8 + id 2 graphics [ - w 85.80000000000001 + w 50.6 h 26 type "rectangle" fill "#FFFFFF" @@ -3522,7 +11581,7 @@ graph ] LabelGraphics [ - text "New Reals" + text "false" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3545,11 +11604,11 @@ graph node [ - id 9 + id 3 graphics [ - w 103.4 - h 26 + w 107.80000000000001 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3557,7 +11616,7 @@ graph ] LabelGraphics [ - text "New Strings" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3569,6 +11628,7 @@ graph LabelGraphics [ text " + Region class " fontSize 14 fontName "Consolas" @@ -3580,11 +11640,11 @@ graph node [ - id 10 + id 4 graphics [ - w 103.4 - h 26 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3592,7 +11652,7 @@ graph ] LabelGraphics [ - text "New Objects" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3604,6 +11664,9 @@ graph LabelGraphics [ text " + Pseudostate class + Vertex class + Entry class " fontSize 14 fontName "Consolas" @@ -3612,96 +11675,14 @@ graph borderDistance 6 ] ] - edge - [ - source 4 - target 6 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "root reference FileSystem" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 4 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "filesystems reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 3 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "otherFSObjects reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] - edge - [ - source 0 - target 5 - graphics - [ - fill "#000000" - width 3 - targetArrow "standard" - ] - LabelGraphics - [ - text "otherFSObjects reference Model" - fontSize 14 - fontName "Consolas" - configuration "AutoFlippingLabel" - model "six_pos" - position "thead" - ] - ] -] -graph -[ + node [ - id 0 + id 5 graphics [ - w 192.50000000000003 - h 54 + w 154.0 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3709,7 +11690,7 @@ graph ] LabelGraphics [ - text "o 1" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3721,8 +11702,9 @@ graph LabelGraphics [ text " - Model class DefinedPart - Model class + Vertex class + RegularState class + FinalState class " fontSize 14 fontName "Consolas" @@ -3734,11 +11716,11 @@ graph node [ - id 1 + id 6 graphics [ - w 41.800000000000004 - h 26 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3746,7 +11728,7 @@ graph ] LabelGraphics [ - text "true" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3758,6 +11740,7 @@ graph LabelGraphics [ text " + Transition class " fontSize 14 fontName "Consolas" @@ -3769,11 +11752,11 @@ graph node [ - id 2 + id 7 graphics [ - w 50.6 - h 26 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3781,7 +11764,7 @@ graph ] LabelGraphics [ - text "false" + text "null" outline "#000000" fill "#FFFFFF" fontSize 16 @@ -3793,6 +11776,9 @@ graph LabelGraphics [ text " + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -3804,11 +11790,11 @@ graph node [ - id 3 + id 8 graphics [ - w 138.60000000000002 - h 40 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3828,7 +11814,11 @@ graph LabelGraphics [ text " - FileSystem class + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -3840,11 +11830,11 @@ graph node [ - id 4 + id 9 graphics [ - w 123.20000000000002 - h 54 + w 292.6 + h 96 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3864,8 +11854,11 @@ graph LabelGraphics [ text " - FSObject class - Dir class + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart " fontSize 14 fontName "Consolas" @@ -3877,11 +11870,11 @@ graph node [ - id 5 + id 10 graphics [ - w 123.20000000000002 - h 54 + w 138.60000000000002 + h 40 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3901,8 +11894,7 @@ graph LabelGraphics [ text " - FSObject class - File class + Transition class " fontSize 14 fontName "Consolas" @@ -3914,11 +11906,11 @@ graph node [ - id 6 + id 11 graphics [ - w 123.20000000000002 - h 54 + w 146.3 + h 68 type "rectangle" fill "#FFFFFF" fill2 "#FFFFFF" @@ -3938,8 +11930,9 @@ graph LabelGraphics [ text " - FSObject class - File class + Pseudostate class + Vertex class + Exit class " fontSize 14 fontName "Consolas" @@ -3951,7 +11944,7 @@ graph node [ - id 7 + id 12 graphics [ w 112.2 @@ -3986,7 +11979,7 @@ graph node [ - id 8 + id 13 graphics [ w 85.80000000000001 @@ -4021,7 +12014,7 @@ graph node [ - id 9 + id 14 graphics [ w 103.4 @@ -4056,7 +12049,7 @@ graph node [ - id 10 + id 15 graphics [ w 103.4 @@ -4089,6 +12082,84 @@ graph ] ] edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 4 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge [ source 3 target 4 @@ -4100,7 +12171,7 @@ graph ] LabelGraphics [ - text "root reference FileSystem" + text "vertices reference Region" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4110,8 +12181,8 @@ graph ] edge [ - source 0 - target 3 + source 3 + target 5 graphics [ fill "#000000" @@ -4120,7 +12191,7 @@ graph ] LabelGraphics [ - text "filesystems reference Model" + text "vertices reference Region" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4130,8 +12201,68 @@ graph ] edge [ - source 0 - target 5 + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 graphics [ fill "#000000" @@ -4140,7 +12271,83 @@ graph ] LabelGraphics [ - text "otherFSObjects reference Model" + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" @@ -4151,7 +12358,7 @@ graph edge [ source 0 - target 6 + target 3 graphics [ fill "#000000" @@ -4160,7 +12367,7 @@ graph ] LabelGraphics [ - text "otherFSObjects reference Model" + text "regions reference CompositeElement" fontSize 14 fontName "Consolas" configuration "AutoFlippingLabel" 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 index 1fddfd99..08502c12 100644 Binary files a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.png and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.png 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 index 6b9900e2..f61f6ffb 100644 --- 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 @@ -1,8 +1,15 @@ - - - - - - - + + + + + + + + + + + + + + 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 index d1c8d98d..9e25c13a 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv @@ -1,22 +1,18 @@ Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;335;2777;2544;7194393100;105;140;61;186;9;0;3 +1;1;ModelResultImpl;58;4042;5037;7589962200;537;880;485;48;20;0;6 Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;120;2483;7934;1838851300;477;3162;36;100;0;2 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;InconsistencyResultImpl;20;2258;2771;12900;42;12;1;0;0 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;InconsistencyResultImpl;14;2066;3146;29000;439;14;13;0;0 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;15;1857;2520;3998461000;169;207;102;9;4;0;3 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;70;2695;2815;3409332300;111;133;61;18;3;0;5 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;16;2246;2987;3347793300;168;362;201;7;6;0;3 +1;1;ModelResultImpl;35;3137;3383;1446909200;48;0;24;0;0;2 Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;6;839;711;3017372100;45;206;107;9;7;0;1 +1;1;ModelResultImpl;24;2684;30969;24516501600;27279;28245;26662;18;324;0;4 Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;5;879;674;2970538700;33;111;55;7;2;0;1 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;5;882;742;2902370500;64;203;110;9;6;0;1 -Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime -1;1;ModelResultImpl;10;1041;730;3174826600;23;31;19;12;0;0;1 +1;1;ModelResultImpl;23;2143;23882;16188039300;21183;21191;20297;20;189;0;3 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;InsuficientResourcesResultImpl;18;2211;10998;6300;7933;10;95;0;0 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;InsuficientResourcesResultImpl;15;2037;5137;6800;2250;15;169;0;0 +Task;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 +1;1;ModelResultImpl;104;2832;6950;15113591900;777;1074;1256;1824;2107;1521;145;44;0;16 +Task;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 +1;1;ModelResultImpl;42;3179;15266;13359431300;12045;12060;12077;12082;12107;9023;25;176;0;9 +Task;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 +1;1;ModelResultImpl;646;4720;6290;14663107900;900;1000;1126;1525;1621;1177;235;34;0;17 diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml index a09e1cf4..7e10c75a 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml @@ -17,17 +17,12 @@ - - - + + - - - - @@ -134,12 +129,6 @@ - - - - - - diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/ecorePatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/ecorePatterns.vql index 9af35b50..a4718150 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/ecorePatterns.vql +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/ecorePatterns.vql @@ -14,13 +14,13 @@ pattern loopInInheritence(a: EClass) { pattern opposite(a:EReference, b: EReference) { EReference.eOpposite(a,b); } -@Constraint(key={a}, severity="error", message="error") -pattern oppositeDifferentClass(a:EReference) { - EReference.eOpposite(a,b); - EReference.eContainingClass(a,aContaining); - EReference.eType(b,bTarget); - aContaining != bTarget; -} +//@Constraint(key={a}, severity="error", message="error") +//pattern oppositeDifferentClass(a:EReference) { +// EReference.eOpposite(a,b); +// EReference.eContainingClass(a,aContaining); +// EReference.eType(b,bTarget); +// aContaining != bTarget; +//} @Constraint(key={a}, severity="error", message="error") pattern nonSymmetricOpposite(a:EReference, b:EReference) { diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql deleted file mode 100644 index 02d34dcd..00000000 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql +++ /dev/null @@ -1,103 +0,0 @@ -package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries - -import "FamMetamodel" - -@Constraint(message="terminatorAndInformation", severity="error", key={T}) -pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = { - FunctionalOutput.outgoingLinks(Out,I); - FunctionalOutput.terminator(Out,T); -} or { - InformationLink.to(I,In); - FunctionalInput.terminator(In,T); -} - -@QueryBasedFeature -pattern type(This : Function, Target : FunctionType) = { - find rootElements(_Model, This); - Target == FunctionType::Root; -} or { - neg find parent(_Child, This); - neg find rootElements(_Model, This); - Target == FunctionType::Leaf; -} or { - find parent(This, _Par); - find parent(_Child, This); - Target == FunctionType::Intermediate; -} - -pattern rootElements(Model: FunctionalArchitectureModel, Root : Function) = { - FunctionalArchitectureModel.rootElements(Model, Root); -} - -pattern parent(Func : Function, Par : Function) = { - Function.parent(Func, Par); -} - -@QueryBasedFeature -pattern model(This:FunctionalElement, Target: FunctionalArchitectureModel) { - FunctionalElement(This); - FunctionalArchitectureModel(Target); -} - -/* -@Constraint(message="noRoot", severity="error", key={fam}) -pattern noRoot(fam: FunctionalArchitectureModel) { - FunctionalArchitectureModel(fam); - neg find hasRoot(_); -} -@Constraint(message="noIntermediate", severity="error", key={fam}) -pattern noInt(fam: FunctionalArchitectureModel) { - FunctionalArchitectureModel(fam); - neg find hasInt(_); -} -@Constraint(message="noLeaf", severity="error", key={fam}) -pattern noLeaf(fam: FunctionalArchitectureModel) { - FunctionalArchitectureModel(fam); - neg find hasLeaf(_); -} -*/ - -/* -@QueryBasedFeature -pattern model(This : FunctionalElement, Target : FunctionalArchitectureModel) = { - find parent+(This, Parent); - find rootElements(Target, Parent); -} or { - find rootElements(Target, This); -} - -pattern interfaceData(FI : FunctionalInterface, FD : FunctionalData) = { - FunctionalInterface.data(FI, FD); -} - -@QueryBasedFeature -pattern inputs(This : FunctionalInterface, Target : FunctionalInput) = { - find interfaceData(This, Target); -} - -@QueryBasedFeature -pattern outputs(This : FunctionalInterface, Target : FunctionalOutput) = { - find interfaceData(This, Target); -} - -@QueryBasedFeature -pattern outgoingLinks(This : FunctionalElement, Target : InformationLink) = { - FunctionalElement.interface.outputs(This, Output); - InformationLink.from(Target, Output); -} - -@QueryBasedFeature -pattern incomingLinks(This : FunctionalElement, Target : InformationLink) = { - FunctionalElement.interface.inputs(This, Input); - InformationLink.to(Target, Input); -} - -@QueryBasedFeature -pattern connects(This : FunctionalElement, Target : FunctionalElement) = { - FunctionalElement.outgoingLinks(This,Link); - FunctionalElement.incomingLinks(Target,Link); -}*/ - -/*pattern frequency(a: Function, b : EInt) { - Function.minimumFrequency(a,b); -}*/ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famSPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famSPatterns.vql new file mode 100644 index 00000000..307b0f9c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famSPatterns.vql @@ -0,0 +1,13 @@ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries + +//import epackage "http://www.inf.mit.bme.hu/viatrasolver/example/fam" +import epackage "FamMetamodel" + +@Constraint(message="terminatorAndInformation", severity="error", key={T}) +pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = { + FunctionalOutput.outgoingLinks(Out,I); + FunctionalOutput.terminator(Out,T); +} or { + InformationLink.to(I,In); + FunctionalInput.terminator(In,T); +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famXPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famXPatterns.vql new file mode 100644 index 00000000..153fec91 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famXPatterns.vql @@ -0,0 +1,103 @@ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries + +import epackage "http://www.inf.mit.bme.hu/viatrasolver/example/fam" + +@Constraint(message="terminatorAndInformation", severity="error", key={T}) +pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = { + FunctionalOutput.outgoingLinks(Out,I); + FunctionalOutput.terminator(Out,T); +} or { + InformationLink.to(I,In); + FunctionalInput.terminator(In,T); +} + +@QueryBasedFeature +pattern type(This : Function, Target : FunctionType) = { + find rootElements(_Model, This); + Target == FunctionType::Root; +} or { + neg find parent(_Child, This); + neg find rootElements(_Model, This); + Target == FunctionType::Leaf; +} or { + find parent(This, _Par); + find parent(_Child, This); + Target == FunctionType::Intermediate; +} + +pattern rootElements(Model: FunctionalArchitectureModel, Root : Function) = { + FunctionalArchitectureModel.rootElements(Model, Root); +} + +pattern parent(Func : Function, Par : Function) = { + Function.parent(Func, Par); +} + +@QueryBasedFeature +pattern model(This:FunctionalElement, Target: FunctionalArchitectureModel) { + FunctionalElement(This); + FunctionalArchitectureModel(Target); +} + +/* +@Constraint(message="noRoot", severity="error", key={fam}) +pattern noRoot(fam: FunctionalArchitectureModel) { + FunctionalArchitectureModel(fam); + neg find hasRoot(_); +} +@Constraint(message="noIntermediate", severity="error", key={fam}) +pattern noInt(fam: FunctionalArchitectureModel) { + FunctionalArchitectureModel(fam); + neg find hasInt(_); +} +@Constraint(message="noLeaf", severity="error", key={fam}) +pattern noLeaf(fam: FunctionalArchitectureModel) { + FunctionalArchitectureModel(fam); + neg find hasLeaf(_); +} +*/ + +/* +@QueryBasedFeature +pattern model(This : FunctionalElement, Target : FunctionalArchitectureModel) = { + find parent+(This, Parent); + find rootElements(Target, Parent); +} or { + find rootElements(Target, This); +} + +pattern interfaceData(FI : FunctionalInterface, FD : FunctionalData) = { + FunctionalInterface.data(FI, FD); +} + +@QueryBasedFeature +pattern inputs(This : FunctionalInterface, Target : FunctionalInput) = { + find interfaceData(This, Target); +} + +@QueryBasedFeature +pattern outputs(This : FunctionalInterface, Target : FunctionalOutput) = { + find interfaceData(This, Target); +} + +@QueryBasedFeature +pattern outgoingLinks(This : FunctionalElement, Target : InformationLink) = { + FunctionalElement.interface.outputs(This, Output); + InformationLink.from(Target, Output); +} + +@QueryBasedFeature +pattern incomingLinks(This : FunctionalElement, Target : InformationLink) = { + FunctionalElement.interface.inputs(This, Input); + InformationLink.to(Target, Input); +} + +@QueryBasedFeature +pattern connects(This : FunctionalElement, Target : FunctionalElement) = { + FunctionalElement.outgoingLinks(This,Link); + FunctionalElement.incomingLinks(Target,Link); +}*/ + +/*pattern frequency(a: Function, b : EInt) { + Function.minimumFrequency(a,b); +}*/ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/TerminatorAndInformation.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/TerminatorAndInformation.java index 69a6b9f4..1d3019e8 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/TerminatorAndInformation.java +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/TerminatorAndInformation.java @@ -1,5 +1,5 @@ /** - * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famSPatterns.vql */ package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries; diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/.gitignore index 96fd178f..a0ebcd7a 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/.gitignore +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/.gitignore @@ -156,3 +156,27 @@ /Transition_M3.java /Transition_M4.java /YakinduMutatedPatterns.java +/Child.java +/ChoiceHasNoIncoming.java +/ChoiceHasNoOutgoing.java +/EntryInRegion.java +/HasMultipleIncomingTrainsition.java +/HasMultipleOutgoingTrainsition.java +/HasMultipleRegions.java +/IncomingToEntry.java +/MultipleTransitionFromEntry.java +/NoEntryInRegion.java +/NoOutgoingTransitionFromEntry.java +/NoStateInRegion.java +/NotSynchronizingStates.java +/OutgoingFromExit.java +/OutgoingFromFinal.java +/StateInRegion.java +/SynchHasNoIncoming.java +/SynchHasNoOutgoing.java +/SynchThree.java +/SynchronizedIncomingInSameRegion.java +/SynchronizedRegionDoesNotHaveMultipleRegions.java +/SynchronizedRegionsAreNotSiblings.java +/Transition.java +/TwoSynch.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/TestExecutionICSE.xtend b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/TestExecutionICSE.xtend new file mode 100644 index 00000000..41bb763d --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/TestExecutionICSE.xtend @@ -0,0 +1,22 @@ +package ca.mcgill.ecse.dslreasoner.standalone.test + +import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor + +class TestExecutionICSE { + def static void main(String[] args) { + val fileSystemPath = "configs/fileSystem.vsconfig"; + val ecorePath = "configs/ecore.vsconfig"; + val yakinduPath = "configs/yakindu.vsconfig"; + val famPath = "configs/fam.vsconfig"; +// val yakinduWithWFPath = "configs/yakinduWF.vsconfig"; +// val famWithWFPath = "configs/famWF.vsconfig"; + val exp1 = StandaloneScriptExecutor.executeScript(fileSystemPath); + println(exp1) +// val exp2 = StandaloneScriptExecutor.executeScript(ecorePath); +// println(exp2) + val exp3 = StandaloneScriptExecutor.executeScript(yakinduPath); + println(exp3) + val exp4 = StandaloneScriptExecutor.executeScript(famPath); + println(exp4) + } +} \ No newline at end of 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 index c1c75043..d8ca61ea 100644 --- 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 @@ -62,7 +62,6 @@ public interface FileSystem extends EObject { * @return the value of the 'Live' reference list. * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFileSystem_Live() * @model transient="true" changeable="false" volatile="true" derived="true" - * annotation="org.eclipse.viatra.query.querybasedfeature patternFQN='hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live'" * @generated */ EList getLive(); 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 index 8bbc6a74..b5ef2b66 100644 --- 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 @@ -13,7 +13,6 @@ import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; @@ -44,16 +43,6 @@ public class FileSystemImpl extends MinimalEObjectImpl.Container implements File */ protected Dir root; - /** - * The cached setting delegate for the '{@link #getLive() Live}' reference list. - * - * - * @see #getLive() - * @generated - * @ordered - */ - protected EStructuralFeature.Internal.SettingDelegate LIVE__ESETTING_DELEGATE = ((EStructuralFeature.Internal)filesystemPackage.Literals.FILE_SYSTEM__LIVE).getSettingDelegate(); - /** * * @@ -123,7 +112,11 @@ public class FileSystemImpl extends MinimalEObjectImpl.Container implements File */ @SuppressWarnings("unchecked") public EList getLive() { - return (EList)LIVE__ESETTING_DELEGATE.dynamicGet(this, null, 0, true, false); + // TODO: implement this method to return the 'Live' reference list + // Ensure that you remove @generated or mark it @generated NOT + // The list is expected to implement org.eclipse.emf.ecore.util.InternalEList and org.eclipse.emf.ecore.EStructuralFeature.Setting + // so it's likely that an appropriate subclass of org.eclipse.emf.ecore.util.EcoreEList should be used. + throw new UnsupportedOperationException(); } /** @@ -197,7 +190,7 @@ public class FileSystemImpl extends MinimalEObjectImpl.Container implements File case filesystemPackage.FILE_SYSTEM__ROOT: return root != null; case filesystemPackage.FILE_SYSTEM__LIVE: - return LIVE__ESETTING_DELEGATE.dynamicIsSet(this, null, 0); + return !getLive().isEmpty(); } return super.eIsSet(featureID); } 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 index 5c6dd21e..5bd41020 100644 --- 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 @@ -317,8 +317,6 @@ public class filesystemPackageImpl extends EPackageImpl implements filesystemPac // Create annotations // http://www.eclipse.org/emf/2002/Ecore createEcoreAnnotations(); - // org.eclipse.viatra.query.querybasedfeature - createOrgAnnotations(); } /** @@ -337,20 +335,4 @@ public class filesystemPackageImpl extends EPackageImpl implements filesystemPac }); } - /** - * Initializes the annotations for org.eclipse.viatra.query.querybasedfeature. - * - * - * @generated - */ - protected void createOrgAnnotations() { - String source = "org.eclipse.viatra.query.querybasedfeature"; - addAnnotation - (getFileSystem_Live(), - source, - new String[] { - "patternFQN", "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live" - }); - } - } //filesystemPackageImpl -- cgit v1.2.3-70-g09d2