aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-02-17 20:15:58 -0500
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-02-17 20:15:58 -0500
commitbcbd697001571ce50fd4f5299423b9bc9f77d366 (patch)
tree10ea1c9d0c1df565ebec036e6a2a37476e1e32b7
parentMerge remote-tracking branch 'origin/master' into Vampire-New (diff)
downloadVIATRA-Generator-bcbd697001571ce50fd4f5299423b9bc9f77d366.tar.gz
VIATRA-Generator-bcbd697001571ce50fd4f5299423b9bc9f77d366.tar.zst
VIATRA-Generator-bcbd697001571ce50fd4f5299423b9bc9f77d366.zip
complete vsconfig files #19
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig4
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore12
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt15
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated7983
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem69
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/init.partialmodel7
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt2
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml3354
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.pngbin68150 -> 73113 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi22
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml3356
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.pngbin64057 -> 75459 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi21
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml3317
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.pngbin64831 -> 75681 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi22
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml3338
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.pngbin80996 -> 88715 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi21
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml3338
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.pngbin66383 -> 88028 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi20
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv8
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generated3valued.vql_deactivated2925
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generation.logicproblem2
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt2
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.gml830
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.pngbin127573 -> 99990 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.xmi15
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.gml832
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.pngbin116286 -> 98486 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.xmi15
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv2
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml10
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking.txt (renamed from Tests/ca.mcgill.ecse.dslreasoner.standalone.test/functionalPlugin.txt)0
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking2.txt141
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql (renamed from Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famXPatterns.vql)3
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/TerminatorAndInformation.java2
38 files changed, 29607 insertions, 81 deletions
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig
index 8137ddf7..e56cf30c 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig
@@ -3,8 +3,8 @@ import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamPattern
3 3
4generate { 4generate {
5 metamodel = { package fam } 5 metamodel = { package fam }
6// constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries} 6 constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries}
7// partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi"} 7 partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi"}
8 solver = ViatraSolver 8 solver = ViatraSolver
9 scope = { 9 scope = {
10 #node = 10 10 #node = 10
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 05023c15..d9c8bfef 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore
@@ -8,7 +8,11 @@
8 <eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//FunctionalInterface" 8 <eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//FunctionalInterface"
9 containment="true" eOpposite="#//FunctionalInterface/element"/> 9 containment="true" eOpposite="#//FunctionalInterface/element"/>
10 <eStructuralFeatures xsi:type="ecore:EReference" name="model" lowerBound="1" eType="#//FunctionalArchitectureModel" 10 <eStructuralFeatures xsi:type="ecore:EReference" name="model" lowerBound="1" eType="#//FunctionalArchitectureModel"
11 volatile="true" transient="true" derived="true"/> 11 volatile="true" transient="true" derived="true">
12 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
13 <details key="patternFQN" value="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model"/>
14 </eAnnotations>
15 </eStructuralFeatures>
12 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Function" 16 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Function"
13 eOpposite="#//Function/subElements"/> 17 eOpposite="#//Function/subElements"/>
14 </eClassifiers> 18 </eClassifiers>
@@ -20,7 +24,11 @@
20 <eStructuralFeatures xsi:type="ecore:EReference" name="subElements" upperBound="-1" 24 <eStructuralFeatures xsi:type="ecore:EReference" name="subElements" upperBound="-1"
21 eType="#//FunctionalElement" containment="true" eOpposite="#//FunctionalElement/parent"/> 25 eType="#//FunctionalElement" containment="true" eOpposite="#//FunctionalElement/parent"/>
22 <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FunctionType" 26 <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FunctionType"
23 changeable="false" volatile="true" transient="true" derived="true"/> 27 changeable="false" volatile="true" transient="true" derived="true">
28 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
29 <details key="patternFQN" value="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"/>
30 </eAnnotations>
31 </eStructuralFeatures>
24 </eClassifiers> 32 </eClassifiers>
25 <eClassifiers xsi:type="ecore:EClass" name="FAMTerminator"> 33 <eClassifiers xsi:type="ecore:EClass" name="FAMTerminator">
26 <eStructuralFeatures xsi:type="ecore:EReference" name="data" eType="#//FunctionalData" 34 <eStructuralFeatures xsi:type="ecore:EReference" name="data" eType="#//FunctionalData"
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt
index 0e9e29c6..28b10066 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt
@@ -430,4 +430,19 @@ Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcg
430 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) 430 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
431 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) 431 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
432 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) 432 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
433 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
434 org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56)
435 org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152)
436 org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113)
437 org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854)
438 ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.<init>(FunctionalElementImpl.java:57)
439 ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.<init>(FunctionImpl.java:64)
440 ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125)
441 ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68)
442 hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75)
443 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359)
444 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
445 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
446 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
447 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
433 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56) \ No newline at end of file 448 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 7899a25f..b3223685 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
@@ -47045,3 +47045,7986 @@ pattern refineRelation_type_attribute_Function(
47045 find mayInRelationtype_attribute_Function(problem,interpretation,from,to); 47045 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
47046 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); 47046 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
47047} 47047}
47048import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
47049import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
47050import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
47051
47052//////////
47053// 0. Util
47054//////////
47055private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
47056 PartialInterpretation.problem(interpretation,problem);
47057}
47058
47059/////////////////////////
47060// 0.1 Existence
47061/////////////////////////
47062private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47063 find interpretation(problem,interpretation);
47064 LogicProblem.elements(problem,element);
47065} or {
47066 find interpretation(problem,interpretation);
47067 PartialInterpretation.newElements(interpretation,element);
47068}
47069
47070private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47071 find mustExist(problem,interpretation,element);
47072} or {
47073 find interpretation(problem,interpretation);
47074 neg find elementCloseWorld(element);
47075 PartialInterpretation.openWorldElements(interpretation,element);
47076}
47077
47078private pattern elementCloseWorld(element:DefinedElement) {
47079 PartialInterpretation.openWorldElements(i,element);
47080 PartialInterpretation.maxNewElements(i,0);
47081} or {
47082 Scope.targetTypeInterpretation(scope,interpretation);
47083 PartialTypeInterpratation.elements(interpretation,element);
47084 Scope.maxNewElements(scope,0);
47085}
47086
47087////////////////////////
47088// 0.2 Equivalence
47089////////////////////////
47090pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
47091 find mayExist(problem,interpretation,a);
47092 find mayExist(problem,interpretation,b);
47093 a == b;
47094}
47095
47096////////////////////////
47097// 0.3 Required Patterns by TypeIndexer
47098////////////////////////
47099private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
47100 find interpretation(problem,interpretation);
47101 LogicProblem.types(problem,type);
47102 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
47103 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47104}
47105
47106private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
47107 find interpretation(problem,interpretation);
47108 LogicProblem.types(problem,type);
47109 TypeDefinition.elements(type,element);
47110} or {
47111 find interpretation(problem,interpretation);
47112 find typeInterpretation(problem,interpretation,type,typeInterpretation);
47113 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
47114}
47115
47116private pattern isPrimitive(element: PrimitiveElement) {
47117 PrimitiveElement(element);
47118}
47119
47120//////////
47121// 1. Problem-Specific Base Indexers
47122//////////
47123// 1.1 Type Indexers
47124//////////
47125// 1.1.1 primitive Type Indexers
47126//////////
47127
47128//////////
47129// 1.1.2 domain-specific Type Indexers
47130//////////
47131/**
47132 * An element must be an instance of type "FunctionalElement class".
47133 */
47134private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47135 Type.name(type,"FunctionalElement class");
47136 find directInstanceOf(problem,interpretation,element,type);
47137}
47138private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
47139 find interpretation(problem,interpretation);
47140 PartialInterpretation.scopes(interpretation,scope);
47141 Scope.targetTypeInterpretation(scope,typeInterpretation);
47142 Scope.maxNewElements(scope,0);
47143 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47144 Type.name(type,"FunctionalElement class");
47145}
47146
47147/**
47148 * An element may be an instance of type "FunctionalElement class".
47149 */
47150private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47151{
47152 find interpretation(problem,interpretation);
47153 PartialInterpretation.newElements(interpretation,element);
47154 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47155 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47156 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47157 neg find mustInstanceOfFunction_class(problem,interpretation,element);
47158 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47159 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47160 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
47161 neg find isPrimitive(element);
47162} or {
47163 find interpretation(problem,interpretation);
47164 PartialInterpretation.openWorldElements(interpretation,element);
47165 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47166 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47167 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47168 neg find mustInstanceOfFunction_class(problem,interpretation,element);
47169 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47170 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47171 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
47172 neg find isPrimitive(element);
47173} or
47174{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
47175/**
47176 * An element must be an instance of type "FunctionalArchitectureModel class".
47177 */
47178private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47179 Type.name(type,"FunctionalArchitectureModel class");
47180 find directInstanceOf(problem,interpretation,element,type);
47181}
47182private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
47183 find interpretation(problem,interpretation);
47184 PartialInterpretation.scopes(interpretation,scope);
47185 Scope.targetTypeInterpretation(scope,typeInterpretation);
47186 Scope.maxNewElements(scope,0);
47187 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47188 Type.name(type,"FunctionalArchitectureModel class");
47189}
47190
47191/**
47192 * An element may be an instance of type "FunctionalArchitectureModel class".
47193 */
47194private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47195{
47196 find interpretation(problem,interpretation);
47197 PartialInterpretation.newElements(interpretation,element);
47198 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47199 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47200 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47201 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47202 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47203 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
47204 neg find isPrimitive(element);
47205} or {
47206 find interpretation(problem,interpretation);
47207 PartialInterpretation.openWorldElements(interpretation,element);
47208 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47209 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47210 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47211 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47212 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47213 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
47214 neg find isPrimitive(element);
47215} or
47216{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
47217/**
47218 * An element must be an instance of type "Function class".
47219 */
47220private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47221 Type.name(type,"Function class");
47222 find directInstanceOf(problem,interpretation,element,type);
47223}
47224private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
47225 find interpretation(problem,interpretation);
47226 PartialInterpretation.scopes(interpretation,scope);
47227 Scope.targetTypeInterpretation(scope,typeInterpretation);
47228 Scope.maxNewElements(scope,0);
47229 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47230 Type.name(type,"Function class");
47231}
47232
47233/**
47234 * An element may be an instance of type "Function class".
47235 */
47236private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47237{
47238 find interpretation(problem,interpretation);
47239 PartialInterpretation.newElements(interpretation,element);
47240 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47241 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47242 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47243 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47244 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47245 neg find scopeDisallowsNewFunction_class(problem, interpretation);
47246 neg find isPrimitive(element);
47247} or {
47248 find interpretation(problem,interpretation);
47249 PartialInterpretation.openWorldElements(interpretation,element);
47250 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47251 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47252 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47253 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47254 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47255 neg find scopeDisallowsNewFunction_class(problem, interpretation);
47256 neg find isPrimitive(element);
47257} or
47258{ find mustInstanceOfFunction_class(problem,interpretation,element); }
47259/**
47260 * An element must be an instance of type "FAMTerminator class".
47261 */
47262private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47263 Type.name(type,"FAMTerminator class");
47264 find directInstanceOf(problem,interpretation,element,type);
47265}
47266private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
47267 find interpretation(problem,interpretation);
47268 PartialInterpretation.scopes(interpretation,scope);
47269 Scope.targetTypeInterpretation(scope,typeInterpretation);
47270 Scope.maxNewElements(scope,0);
47271 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47272 Type.name(type,"FAMTerminator class");
47273}
47274
47275/**
47276 * An element may be an instance of type "FAMTerminator class".
47277 */
47278private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47279{
47280 find interpretation(problem,interpretation);
47281 PartialInterpretation.newElements(interpretation,element);
47282 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47283 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47284 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47285 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47286 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47287 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
47288 neg find isPrimitive(element);
47289} or {
47290 find interpretation(problem,interpretation);
47291 PartialInterpretation.openWorldElements(interpretation,element);
47292 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47293 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47294 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47295 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47296 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47297 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
47298 neg find isPrimitive(element);
47299} or
47300{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
47301/**
47302 * An element must be an instance of type "InformationLink class".
47303 */
47304private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47305 Type.name(type,"InformationLink class");
47306 find directInstanceOf(problem,interpretation,element,type);
47307}
47308private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
47309 find interpretation(problem,interpretation);
47310 PartialInterpretation.scopes(interpretation,scope);
47311 Scope.targetTypeInterpretation(scope,typeInterpretation);
47312 Scope.maxNewElements(scope,0);
47313 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47314 Type.name(type,"InformationLink class");
47315}
47316
47317/**
47318 * An element may be an instance of type "InformationLink class".
47319 */
47320private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47321{
47322 find interpretation(problem,interpretation);
47323 PartialInterpretation.newElements(interpretation,element);
47324 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47325 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47326 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47327 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47328 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47329 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
47330 neg find isPrimitive(element);
47331} or {
47332 find interpretation(problem,interpretation);
47333 PartialInterpretation.openWorldElements(interpretation,element);
47334 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47335 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47336 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47337 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47338 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47339 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
47340 neg find isPrimitive(element);
47341} or
47342{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
47343/**
47344 * An element must be an instance of type "FunctionalInterface class".
47345 */
47346private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47347 Type.name(type,"FunctionalInterface class");
47348 find directInstanceOf(problem,interpretation,element,type);
47349}
47350private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
47351 find interpretation(problem,interpretation);
47352 PartialInterpretation.scopes(interpretation,scope);
47353 Scope.targetTypeInterpretation(scope,typeInterpretation);
47354 Scope.maxNewElements(scope,0);
47355 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47356 Type.name(type,"FunctionalInterface class");
47357}
47358
47359/**
47360 * An element may be an instance of type "FunctionalInterface class".
47361 */
47362private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47363{
47364 find interpretation(problem,interpretation);
47365 PartialInterpretation.newElements(interpretation,element);
47366 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47367 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47368 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47369 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47370 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47371 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
47372 neg find isPrimitive(element);
47373} or {
47374 find interpretation(problem,interpretation);
47375 PartialInterpretation.openWorldElements(interpretation,element);
47376 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
47377 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47378 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47379 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47380 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47381 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
47382 neg find isPrimitive(element);
47383} or
47384{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
47385/**
47386 * An element must be an instance of type "FunctionalInput class".
47387 */
47388private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47389 Type.name(type,"FunctionalInput class");
47390 find directInstanceOf(problem,interpretation,element,type);
47391}
47392private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
47393 find interpretation(problem,interpretation);
47394 PartialInterpretation.scopes(interpretation,scope);
47395 Scope.targetTypeInterpretation(scope,typeInterpretation);
47396 Scope.maxNewElements(scope,0);
47397 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47398 Type.name(type,"FunctionalInput class");
47399}
47400
47401/**
47402 * An element may be an instance of type "FunctionalInput class".
47403 */
47404private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47405{
47406 find interpretation(problem,interpretation);
47407 PartialInterpretation.newElements(interpretation,element);
47408 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47409 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47410 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47411 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
47412 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47413 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47414 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
47415 neg find isPrimitive(element);
47416} or {
47417 find interpretation(problem,interpretation);
47418 PartialInterpretation.openWorldElements(interpretation,element);
47419 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47420 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47421 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47422 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
47423 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47424 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47425 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
47426 neg find isPrimitive(element);
47427} or
47428{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
47429/**
47430 * An element must be an instance of type "FunctionalOutput class".
47431 */
47432private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47433 Type.name(type,"FunctionalOutput class");
47434 find directInstanceOf(problem,interpretation,element,type);
47435}
47436private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
47437 find interpretation(problem,interpretation);
47438 PartialInterpretation.scopes(interpretation,scope);
47439 Scope.targetTypeInterpretation(scope,typeInterpretation);
47440 Scope.maxNewElements(scope,0);
47441 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47442 Type.name(type,"FunctionalOutput class");
47443}
47444
47445/**
47446 * An element may be an instance of type "FunctionalOutput class".
47447 */
47448private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47449{
47450 find interpretation(problem,interpretation);
47451 PartialInterpretation.newElements(interpretation,element);
47452 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47453 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47454 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
47455 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47456 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47457 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47458 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
47459 neg find isPrimitive(element);
47460} or {
47461 find interpretation(problem,interpretation);
47462 PartialInterpretation.openWorldElements(interpretation,element);
47463 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47464 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47465 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
47466 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47467 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47468 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47469 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
47470 neg find isPrimitive(element);
47471} or
47472{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
47473/**
47474 * An element must be an instance of type "FunctionalData class".
47475 */
47476private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47477 Type.name(type,"FunctionalData class");
47478 find directInstanceOf(problem,interpretation,element,type);
47479}
47480private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
47481 find interpretation(problem,interpretation);
47482 PartialInterpretation.scopes(interpretation,scope);
47483 Scope.targetTypeInterpretation(scope,typeInterpretation);
47484 Scope.maxNewElements(scope,0);
47485 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47486 Type.name(type,"FunctionalData class");
47487}
47488
47489/**
47490 * An element may be an instance of type "FunctionalData class".
47491 */
47492private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47493{
47494 find interpretation(problem,interpretation);
47495 PartialInterpretation.newElements(interpretation,element);
47496 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47497 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47498 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
47499 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47500 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
47501 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47502 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47503 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
47504 neg find isPrimitive(element);
47505} or {
47506 find interpretation(problem,interpretation);
47507 PartialInterpretation.openWorldElements(interpretation,element);
47508 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
47509 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
47510 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
47511 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
47512 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
47513 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
47514 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
47515 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
47516 neg find isPrimitive(element);
47517} or
47518{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
47519/**
47520 * An element must be an instance of type "FunctionType enum".
47521 */
47522private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47523 Type.name(type,"FunctionType enum");
47524 find directInstanceOf(problem,interpretation,element,type);
47525}
47526private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
47527 find interpretation(problem,interpretation);
47528 PartialInterpretation.scopes(interpretation,scope);
47529 Scope.targetTypeInterpretation(scope,typeInterpretation);
47530 Scope.maxNewElements(scope,0);
47531 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47532 Type.name(type,"FunctionType enum");
47533}
47534
47535/**
47536 * An element may be an instance of type "FunctionType enum".
47537 */
47538private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47539{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
47540
47541//////////
47542// 1.2 Relation Declaration Indexers
47543//////////
47544/**
47545 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
47546 */
47547private pattern mustInRelationinterface_reference_FunctionalElement(
47548 problem:LogicProblem, interpretation:PartialInterpretation,
47549 source: DefinedElement, target:DefinedElement)
47550{
47551 find interpretation(problem,interpretation);
47552 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47553 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
47554 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47555 BinaryElementRelationLink.param1(link,source);
47556 BinaryElementRelationLink.param2(link,target);
47557}
47558/**
47559 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
47560 */
47561private pattern mayInRelationinterface_reference_FunctionalElement(
47562 problem:LogicProblem, interpretation:PartialInterpretation,
47563 source: DefinedElement, target:DefinedElement)
47564{
47565 find interpretation(problem,interpretation);
47566 // The two endpoint of the link have to exist
47567 find mayExist(problem, interpretation, source);
47568 find mayExist(problem, interpretation, target);
47569 // Type consistency
47570 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
47571 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
47572 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47573 // the upper bound of the multiplicity should be considered.
47574 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
47575 check(numberOfExistingReferences < 1);
47576 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47577 // the upper bound of the opposite reference multiplicity should be considered.
47578 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
47579 check(numberOfExistingOppositeReferences < 1);
47580 // The reference is containment, then a new reference cannot be create if:
47581 // 1. Multiple parents
47582 neg find mustContains4(problem,interpretation,_,target);
47583 // 2. Circle in the containment hierarchy
47584 neg find mustTransitiveContains(source,target);
47585} or {
47586 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
47587}
47588/**
47589 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
47590 */
47591private pattern mustInRelationmodel_reference_FunctionalElement(
47592 problem:LogicProblem, interpretation:PartialInterpretation,
47593 source: DefinedElement, target:DefinedElement)
47594{
47595 find interpretation(problem,interpretation);
47596 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47597 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
47598 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47599 BinaryElementRelationLink.param1(link,source);
47600 BinaryElementRelationLink.param2(link,target);
47601}
47602/**
47603 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
47604 */
47605private pattern mayInRelationmodel_reference_FunctionalElement(
47606 problem:LogicProblem, interpretation:PartialInterpretation,
47607 source: DefinedElement, target:DefinedElement)
47608{
47609 find interpretation(problem,interpretation);
47610 // The two endpoint of the link have to exist
47611 find mayExist(problem, interpretation, source);
47612 find mayExist(problem, interpretation, target);
47613 // Type consistency
47614 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
47615 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
47616 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47617 // the upper bound of the multiplicity should be considered.
47618 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
47619 check(numberOfExistingReferences < 1);
47620} or {
47621 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
47622}
47623/**
47624 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
47625 */
47626private pattern mustInRelationparent_reference_FunctionalElement(
47627 problem:LogicProblem, interpretation:PartialInterpretation,
47628 source: DefinedElement, target:DefinedElement)
47629{
47630 find interpretation(problem,interpretation);
47631 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47632 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
47633 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47634 BinaryElementRelationLink.param1(link,source);
47635 BinaryElementRelationLink.param2(link,target);
47636}
47637/**
47638 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
47639 */
47640private pattern mayInRelationparent_reference_FunctionalElement(
47641 problem:LogicProblem, interpretation:PartialInterpretation,
47642 source: DefinedElement, target:DefinedElement)
47643{
47644 find interpretation(problem,interpretation);
47645 // The two endpoint of the link have to exist
47646 find mayExist(problem, interpretation, source);
47647 find mayExist(problem, interpretation, target);
47648 // Type consistency
47649 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
47650 find mayInstanceOfFunction_class(problem,interpretation,target);
47651 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47652 // the upper bound of the multiplicity should be considered.
47653 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
47654 check(numberOfExistingReferences < 1);
47655 // The eOpposite of the reference is containment, then a referene cannot be created if
47656 // 1. Multiple parents
47657 neg find mustContains4(problem,interpretation,source,_);
47658 // 2. Circle in the containment hierarchy
47659 neg find mustTransitiveContains(source,target);
47660} or {
47661 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
47662}
47663/**
47664 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
47665 */
47666private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
47667 problem:LogicProblem, interpretation:PartialInterpretation,
47668 source: DefinedElement, target:DefinedElement)
47669{
47670 find interpretation(problem,interpretation);
47671 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47672 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
47673 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47674 BinaryElementRelationLink.param1(link,source);
47675 BinaryElementRelationLink.param2(link,target);
47676}
47677/**
47678 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
47679 */
47680private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
47681 problem:LogicProblem, interpretation:PartialInterpretation,
47682 source: DefinedElement, target:DefinedElement)
47683{
47684 find interpretation(problem,interpretation);
47685 // The two endpoint of the link have to exist
47686 find mayExist(problem, interpretation, source);
47687 find mayExist(problem, interpretation, target);
47688 // Type consistency
47689 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
47690 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
47691 // The reference is containment, then a new reference cannot be create if:
47692 // 1. Multiple parents
47693 neg find mustContains4(problem,interpretation,_,target);
47694 // 2. Circle in the containment hierarchy
47695 neg find mustTransitiveContains(source,target);
47696} or {
47697 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
47698}
47699/**
47700 * Matcher for detecting tuples t where []subElements reference Function(source,target)
47701 */
47702private pattern mustInRelationsubElements_reference_Function(
47703 problem:LogicProblem, interpretation:PartialInterpretation,
47704 source: DefinedElement, target:DefinedElement)
47705{
47706 find interpretation(problem,interpretation);
47707 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47708 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
47709 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47710 BinaryElementRelationLink.param1(link,source);
47711 BinaryElementRelationLink.param2(link,target);
47712}
47713/**
47714 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
47715 */
47716private pattern mayInRelationsubElements_reference_Function(
47717 problem:LogicProblem, interpretation:PartialInterpretation,
47718 source: DefinedElement, target:DefinedElement)
47719{
47720 find interpretation(problem,interpretation);
47721 // The two endpoint of the link have to exist
47722 find mayExist(problem, interpretation, source);
47723 find mayExist(problem, interpretation, target);
47724 // Type consistency
47725 find mayInstanceOfFunction_class(problem,interpretation,source);
47726 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
47727 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47728 // the upper bound of the opposite reference multiplicity should be considered.
47729 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
47730 check(numberOfExistingOppositeReferences < 1);
47731 // The reference is containment, then a new reference cannot be create if:
47732 // 1. Multiple parents
47733 neg find mustContains4(problem,interpretation,_,target);
47734 // 2. Circle in the containment hierarchy
47735 neg find mustTransitiveContains(source,target);
47736} or {
47737 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
47738}
47739/**
47740 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
47741 */
47742private pattern mustInRelationdata_reference_FAMTerminator(
47743 problem:LogicProblem, interpretation:PartialInterpretation,
47744 source: DefinedElement, target:DefinedElement)
47745{
47746 find interpretation(problem,interpretation);
47747 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47748 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
47749 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47750 BinaryElementRelationLink.param1(link,source);
47751 BinaryElementRelationLink.param2(link,target);
47752}
47753/**
47754 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
47755 */
47756private pattern mayInRelationdata_reference_FAMTerminator(
47757 problem:LogicProblem, interpretation:PartialInterpretation,
47758 source: DefinedElement, target:DefinedElement)
47759{
47760 find interpretation(problem,interpretation);
47761 // The two endpoint of the link have to exist
47762 find mayExist(problem, interpretation, source);
47763 find mayExist(problem, interpretation, target);
47764 // Type consistency
47765 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
47766 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
47767 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47768 // the upper bound of the multiplicity should be considered.
47769 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
47770 check(numberOfExistingReferences < 1);
47771 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47772 // the upper bound of the opposite reference multiplicity should be considered.
47773 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
47774 check(numberOfExistingOppositeReferences < 1);
47775 // The eOpposite of the reference is containment, then a referene cannot be created if
47776 // 1. Multiple parents
47777 neg find mustContains4(problem,interpretation,source,_);
47778 // 2. Circle in the containment hierarchy
47779 neg find mustTransitiveContains(source,target);
47780} or {
47781 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
47782}
47783/**
47784 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
47785 */
47786private pattern mustInRelationfrom_reference_InformationLink(
47787 problem:LogicProblem, interpretation:PartialInterpretation,
47788 source: DefinedElement, target:DefinedElement)
47789{
47790 find interpretation(problem,interpretation);
47791 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47792 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
47793 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47794 BinaryElementRelationLink.param1(link,source);
47795 BinaryElementRelationLink.param2(link,target);
47796}
47797/**
47798 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
47799 */
47800private pattern mayInRelationfrom_reference_InformationLink(
47801 problem:LogicProblem, interpretation:PartialInterpretation,
47802 source: DefinedElement, target:DefinedElement)
47803{
47804 find interpretation(problem,interpretation);
47805 // The two endpoint of the link have to exist
47806 find mayExist(problem, interpretation, source);
47807 find mayExist(problem, interpretation, target);
47808 // Type consistency
47809 find mayInstanceOfInformationLink_class(problem,interpretation,source);
47810 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
47811 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47812 // the upper bound of the multiplicity should be considered.
47813 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
47814 check(numberOfExistingReferences < 1);
47815 // The eOpposite of the reference is containment, then a referene cannot be created if
47816 // 1. Multiple parents
47817 neg find mustContains4(problem,interpretation,source,_);
47818 // 2. Circle in the containment hierarchy
47819 neg find mustTransitiveContains(source,target);
47820} or {
47821 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
47822}
47823/**
47824 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
47825 */
47826private pattern mustInRelationto_reference_InformationLink(
47827 problem:LogicProblem, interpretation:PartialInterpretation,
47828 source: DefinedElement, target:DefinedElement)
47829{
47830 find interpretation(problem,interpretation);
47831 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47832 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
47833 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47834 BinaryElementRelationLink.param1(link,source);
47835 BinaryElementRelationLink.param2(link,target);
47836}
47837/**
47838 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
47839 */
47840private pattern mayInRelationto_reference_InformationLink(
47841 problem:LogicProblem, interpretation:PartialInterpretation,
47842 source: DefinedElement, target:DefinedElement)
47843{
47844 find interpretation(problem,interpretation);
47845 // The two endpoint of the link have to exist
47846 find mayExist(problem, interpretation, source);
47847 find mayExist(problem, interpretation, target);
47848 // Type consistency
47849 find mayInstanceOfInformationLink_class(problem,interpretation,source);
47850 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
47851 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47852 // the upper bound of the multiplicity should be considered.
47853 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
47854 check(numberOfExistingReferences < 1);
47855} or {
47856 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
47857}
47858/**
47859 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
47860 */
47861private pattern mustInRelationdata_reference_FunctionalInterface(
47862 problem:LogicProblem, interpretation:PartialInterpretation,
47863 source: DefinedElement, target:DefinedElement)
47864{
47865 find interpretation(problem,interpretation);
47866 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47867 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
47868 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47869 BinaryElementRelationLink.param1(link,source);
47870 BinaryElementRelationLink.param2(link,target);
47871}
47872/**
47873 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
47874 */
47875private pattern mayInRelationdata_reference_FunctionalInterface(
47876 problem:LogicProblem, interpretation:PartialInterpretation,
47877 source: DefinedElement, target:DefinedElement)
47878{
47879 find interpretation(problem,interpretation);
47880 // The two endpoint of the link have to exist
47881 find mayExist(problem, interpretation, source);
47882 find mayExist(problem, interpretation, target);
47883 // Type consistency
47884 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
47885 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
47886 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47887 // the upper bound of the opposite reference multiplicity should be considered.
47888 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
47889 check(numberOfExistingOppositeReferences < 1);
47890 // The reference is containment, then a new reference cannot be create if:
47891 // 1. Multiple parents
47892 neg find mustContains4(problem,interpretation,_,target);
47893 // 2. Circle in the containment hierarchy
47894 neg find mustTransitiveContains(source,target);
47895} or {
47896 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
47897}
47898/**
47899 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
47900 */
47901private pattern mustInRelationelement_reference_FunctionalInterface(
47902 problem:LogicProblem, interpretation:PartialInterpretation,
47903 source: DefinedElement, target:DefinedElement)
47904{
47905 find interpretation(problem,interpretation);
47906 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47907 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
47908 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47909 BinaryElementRelationLink.param1(link,source);
47910 BinaryElementRelationLink.param2(link,target);
47911}
47912/**
47913 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
47914 */
47915private pattern mayInRelationelement_reference_FunctionalInterface(
47916 problem:LogicProblem, interpretation:PartialInterpretation,
47917 source: DefinedElement, target:DefinedElement)
47918{
47919 find interpretation(problem,interpretation);
47920 // The two endpoint of the link have to exist
47921 find mayExist(problem, interpretation, source);
47922 find mayExist(problem, interpretation, target);
47923 // Type consistency
47924 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
47925 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
47926 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47927 // the upper bound of the multiplicity should be considered.
47928 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
47929 check(numberOfExistingReferences < 1);
47930 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47931 // the upper bound of the opposite reference multiplicity should be considered.
47932 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
47933 check(numberOfExistingOppositeReferences < 1);
47934 // The eOpposite of the reference is containment, then a referene cannot be created if
47935 // 1. Multiple parents
47936 neg find mustContains4(problem,interpretation,source,_);
47937 // 2. Circle in the containment hierarchy
47938 neg find mustTransitiveContains(source,target);
47939} or {
47940 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
47941}
47942/**
47943 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
47944 */
47945private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
47946 problem:LogicProblem, interpretation:PartialInterpretation,
47947 source: DefinedElement, target:DefinedElement)
47948{
47949 find interpretation(problem,interpretation);
47950 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47951 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
47952 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47953 BinaryElementRelationLink.param1(link,source);
47954 BinaryElementRelationLink.param2(link,target);
47955}
47956/**
47957 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
47958 */
47959private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
47960 problem:LogicProblem, interpretation:PartialInterpretation,
47961 source: DefinedElement, target:DefinedElement)
47962{
47963 find interpretation(problem,interpretation);
47964 // The two endpoint of the link have to exist
47965 find mayExist(problem, interpretation, source);
47966 find mayExist(problem, interpretation, target);
47967 // Type consistency
47968 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
47969 find mayInstanceOfInformationLink_class(problem,interpretation,target);
47970 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47971 // the upper bound of the opposite reference multiplicity should be considered.
47972 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
47973 check(numberOfExistingOppositeReferences < 1);
47974} or {
47975 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
47976}
47977/**
47978 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
47979 */
47980private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
47981 problem:LogicProblem, interpretation:PartialInterpretation,
47982 source: DefinedElement, target:DefinedElement)
47983{
47984 find interpretation(problem,interpretation);
47985 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47986 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
47987 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47988 BinaryElementRelationLink.param1(link,source);
47989 BinaryElementRelationLink.param2(link,target);
47990}
47991/**
47992 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
47993 */
47994private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
47995 problem:LogicProblem, interpretation:PartialInterpretation,
47996 source: DefinedElement, target:DefinedElement)
47997{
47998 find interpretation(problem,interpretation);
47999 // The two endpoint of the link have to exist
48000 find mayExist(problem, interpretation, source);
48001 find mayExist(problem, interpretation, target);
48002 // Type consistency
48003 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
48004 find mayInstanceOfInformationLink_class(problem,interpretation,target);
48005 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
48006 // the upper bound of the opposite reference multiplicity should be considered.
48007 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
48008 check(numberOfExistingOppositeReferences < 1);
48009 // The reference is containment, then a new reference cannot be create if:
48010 // 1. Multiple parents
48011 neg find mustContains4(problem,interpretation,_,target);
48012 // 2. Circle in the containment hierarchy
48013 neg find mustTransitiveContains(source,target);
48014} or {
48015 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
48016}
48017/**
48018 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
48019 */
48020private pattern mustInRelationterminator_reference_FunctionalData(
48021 problem:LogicProblem, interpretation:PartialInterpretation,
48022 source: DefinedElement, target:DefinedElement)
48023{
48024 find interpretation(problem,interpretation);
48025 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48026 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
48027 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48028 BinaryElementRelationLink.param1(link,source);
48029 BinaryElementRelationLink.param2(link,target);
48030}
48031/**
48032 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
48033 */
48034private pattern mayInRelationterminator_reference_FunctionalData(
48035 problem:LogicProblem, interpretation:PartialInterpretation,
48036 source: DefinedElement, target:DefinedElement)
48037{
48038 find interpretation(problem,interpretation);
48039 // The two endpoint of the link have to exist
48040 find mayExist(problem, interpretation, source);
48041 find mayExist(problem, interpretation, target);
48042 // Type consistency
48043 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
48044 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
48045 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48046 // the upper bound of the multiplicity should be considered.
48047 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
48048 check(numberOfExistingReferences < 1);
48049 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
48050 // the upper bound of the opposite reference multiplicity should be considered.
48051 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
48052 check(numberOfExistingOppositeReferences < 1);
48053 // The reference is containment, then a new reference cannot be create if:
48054 // 1. Multiple parents
48055 neg find mustContains4(problem,interpretation,_,target);
48056 // 2. Circle in the containment hierarchy
48057 neg find mustTransitiveContains(source,target);
48058} or {
48059 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
48060}
48061/**
48062 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
48063 */
48064private pattern mustInRelationinterface_reference_FunctionalData(
48065 problem:LogicProblem, interpretation:PartialInterpretation,
48066 source: DefinedElement, target:DefinedElement)
48067{
48068 find interpretation(problem,interpretation);
48069 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48070 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
48071 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48072 BinaryElementRelationLink.param1(link,source);
48073 BinaryElementRelationLink.param2(link,target);
48074}
48075/**
48076 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
48077 */
48078private pattern mayInRelationinterface_reference_FunctionalData(
48079 problem:LogicProblem, interpretation:PartialInterpretation,
48080 source: DefinedElement, target:DefinedElement)
48081{
48082 find interpretation(problem,interpretation);
48083 // The two endpoint of the link have to exist
48084 find mayExist(problem, interpretation, source);
48085 find mayExist(problem, interpretation, target);
48086 // Type consistency
48087 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
48088 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
48089 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48090 // the upper bound of the multiplicity should be considered.
48091 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
48092 check(numberOfExistingReferences < 1);
48093 // The eOpposite of the reference is containment, then a referene cannot be created if
48094 // 1. Multiple parents
48095 neg find mustContains4(problem,interpretation,source,_);
48096 // 2. Circle in the containment hierarchy
48097 neg find mustTransitiveContains(source,target);
48098} or {
48099 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
48100}
48101/**
48102 * Matcher for detecting tuples t where []type attribute Function(source,target)
48103 */
48104private pattern mustInRelationtype_attribute_Function(
48105 problem:LogicProblem, interpretation:PartialInterpretation,
48106 source: DefinedElement, target:DefinedElement)
48107{
48108 find interpretation(problem,interpretation);
48109 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48110 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
48111 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48112 BinaryElementRelationLink.param1(link,source);
48113 BinaryElementRelationLink.param2(link,target);
48114}
48115/**
48116 * Matcher for detecting tuples t where <>type attribute Function(source,target)
48117 */
48118private pattern mayInRelationtype_attribute_Function(
48119 problem:LogicProblem, interpretation:PartialInterpretation,
48120 source: DefinedElement, target:DefinedElement)
48121{
48122 find interpretation(problem,interpretation);
48123 // The two endpoint of the link have to exist
48124 find mayExist(problem, interpretation, source);
48125 find mayExist(problem, interpretation, target);
48126 // Type consistency
48127 find mayInstanceOfFunction_class(problem,interpretation,source);
48128 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
48129 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48130 // the upper bound of the multiplicity should be considered.
48131 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
48132 check(numberOfExistingReferences < 1);
48133} or {
48134 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
48135}
48136
48137//////////
48138// 1.3 Relation Definition Indexers
48139//////////
48140
48141//////////
48142// 1.4 Containment Indexer
48143//////////
48144private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
48145 find mustContains4(_,_,source,target);
48146}
48147
48148private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
48149 source: DefinedElement, target: DefinedElement)
48150 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
48151
48152 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
48153
48154 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
48155
48156 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
48157
48158 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
48159
48160 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
48161
48162private pattern mustTransitiveContains(source,target) {
48163 find mustContains2+(source,target);
48164}
48165
48166//////////
48167// 2. Invalidation Indexers
48168//////////
48169// 2.1 Invalidated by WF Queries
48170//////////
48171
48172//////////
48173// 3. Unfinishedness Indexers
48174//////////
48175// 3.1 Unfinishedness Measured by Multiplicity
48176//////////
48177pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
48178 find interpretation(problem,interpretation);
48179 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48180 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
48181 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
48182 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
48183 check(numberOfExistingReferences < 1);
48184 missingMultiplicity == eval(1-numberOfExistingReferences);
48185}
48186pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
48187 find interpretation(problem,interpretation);
48188 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48189 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
48190 find mustInstanceOfInformationLink_class(problem,interpretation,object);
48191 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
48192 check(numberOfExistingReferences < 1);
48193 missingMultiplicity == eval(1-numberOfExistingReferences);
48194}
48195pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
48196 find interpretation(problem,interpretation);
48197 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48198 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
48199 find mustInstanceOfFunction_class(problem,interpretation,object);
48200 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
48201 check(numberOfExistingReferences < 1);
48202 missingMultiplicity == eval(1-numberOfExistingReferences);
48203}
48204
48205//////////
48206// 3.2 Unfinishedness Measured by WF Queries
48207//////////
48208
48209//////////
48210// 4. Refinement Indexers
48211//////////
48212// 4.1 Object constructors
48213//////////
48214private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
48215{
48216 find interpretation(problem,interpretation);
48217 find mustInstanceOfInformationLink_class(problem,interpretation,root);
48218 find mustExist(problem, interpretation, root);
48219}or{
48220 find interpretation(problem,interpretation);
48221 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
48222 find mustExist(problem, interpretation, root);
48223}or{
48224 find interpretation(problem,interpretation);
48225 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
48226 find mustExist(problem, interpretation, root);
48227}or{
48228 find interpretation(problem,interpretation);
48229 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
48230 find mustExist(problem, interpretation, root);
48231}or{
48232 find interpretation(problem,interpretation);
48233 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
48234 find mustExist(problem, interpretation, root);
48235}or{
48236 find interpretation(problem,interpretation);
48237 find mustInstanceOfFunction_class(problem,interpretation,root);
48238 find mustExist(problem, interpretation, root);
48239}or{
48240 find interpretation(problem,interpretation);
48241 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
48242 find mustExist(problem, interpretation, root);
48243}or{
48244 find interpretation(problem,interpretation);
48245 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
48246 find mustExist(problem, interpretation, root);
48247}or{
48248 find interpretation(problem,interpretation);
48249 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
48250 find mustExist(problem, interpretation, root);
48251}
48252pattern createObject_FunctionalArchitectureModel_class(
48253 problem:LogicProblem, interpretation:PartialInterpretation,
48254 typeInterpretation:PartialComplexTypeInterpretation)
48255{
48256 find interpretation(problem,interpretation);
48257 neg find hasElementInContainment(problem,interpretation);
48258 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48259 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class");
48260 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject);
48261 find mayExist(problem, interpretation, newObject);
48262 neg find mustExist(problem, interpretation, newObject);
48263}
48264pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
48265 problem:LogicProblem, interpretation:PartialInterpretation,
48266 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
48267 container:DefinedElement)
48268{
48269 find interpretation(problem,interpretation);
48270 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48271 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
48272 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
48273 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
48274 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
48275 find mayInstanceOfFunction_class(problem,interpretation,newObject);
48276 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
48277 find mustExist(problem, interpretation, container);
48278 neg find mustExist(problem, interpretation, newObject);
48279}
48280pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
48281 problem:LogicProblem, interpretation:PartialInterpretation,
48282 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
48283 container:DefinedElement)
48284{
48285 find interpretation(problem,interpretation);
48286 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48287 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
48288 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
48289 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
48290 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
48291 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
48292 find mustInstanceOfFunction_class(problem,interpretation,container);
48293 find mayInstanceOfFunction_class(problem,interpretation,newObject);
48294 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
48295 find mustExist(problem, interpretation, container);
48296 neg find mustExist(problem, interpretation, newObject);
48297}
48298pattern createObject_Function_class(
48299 problem:LogicProblem, interpretation:PartialInterpretation,
48300 typeInterpretation:PartialComplexTypeInterpretation)
48301{
48302 find interpretation(problem,interpretation);
48303 neg find hasElementInContainment(problem,interpretation);
48304 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48305 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
48306 find mayInstanceOfFunction_class(problem,interpretation,newObject);
48307 find mayExist(problem, interpretation, newObject);
48308 neg find mustExist(problem, interpretation, newObject);
48309}
48310pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
48311 problem:LogicProblem, interpretation:PartialInterpretation,
48312 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
48313 container:DefinedElement)
48314{
48315 find interpretation(problem,interpretation);
48316 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48317 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
48318 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
48319 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
48320 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
48321 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
48322 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
48323 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
48324 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
48325 find mustExist(problem, interpretation, container);
48326 neg find mustExist(problem, interpretation, newObject);
48327}
48328pattern createObject_FunctionalInterface_class(
48329 problem:LogicProblem, interpretation:PartialInterpretation,
48330 typeInterpretation:PartialComplexTypeInterpretation)
48331{
48332 find interpretation(problem,interpretation);
48333 neg find hasElementInContainment(problem,interpretation);
48334 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48335 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
48336 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
48337 find mayExist(problem, interpretation, newObject);
48338 neg find mustExist(problem, interpretation, newObject);
48339}
48340pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
48341 problem:LogicProblem, interpretation:PartialInterpretation,
48342 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
48343 container:DefinedElement)
48344{
48345 find interpretation(problem,interpretation);
48346 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48347 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
48348 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
48349 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
48350 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
48351 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
48352 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
48353 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
48354 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
48355 find mustExist(problem, interpretation, container);
48356 neg find mustExist(problem, interpretation, newObject);
48357}
48358pattern createObject_FunctionalInput_class(
48359 problem:LogicProblem, interpretation:PartialInterpretation,
48360 typeInterpretation:PartialComplexTypeInterpretation)
48361{
48362 find interpretation(problem,interpretation);
48363 neg find hasElementInContainment(problem,interpretation);
48364 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48365 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
48366 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
48367 find mayExist(problem, interpretation, newObject);
48368 neg find mustExist(problem, interpretation, newObject);
48369}
48370pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
48371 problem:LogicProblem, interpretation:PartialInterpretation,
48372 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
48373 container:DefinedElement)
48374{
48375 find interpretation(problem,interpretation);
48376 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48377 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
48378 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
48379 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
48380 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
48381 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
48382 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
48383 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
48384 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
48385 find mustExist(problem, interpretation, container);
48386 neg find mustExist(problem, interpretation, newObject);
48387}
48388pattern createObject_FAMTerminator_class(
48389 problem:LogicProblem, interpretation:PartialInterpretation,
48390 typeInterpretation:PartialComplexTypeInterpretation)
48391{
48392 find interpretation(problem,interpretation);
48393 neg find hasElementInContainment(problem,interpretation);
48394 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48395 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
48396 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
48397 find mayExist(problem, interpretation, newObject);
48398 neg find mustExist(problem, interpretation, newObject);
48399}
48400pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
48401 problem:LogicProblem, interpretation:PartialInterpretation,
48402 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
48403 container:DefinedElement)
48404{
48405 find interpretation(problem,interpretation);
48406 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48407 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
48408 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
48409 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
48410 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
48411 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
48412 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
48413 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
48414 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
48415 find mustExist(problem, interpretation, container);
48416 neg find mustExist(problem, interpretation, newObject);
48417}
48418pattern createObject_FunctionalOutput_class(
48419 problem:LogicProblem, interpretation:PartialInterpretation,
48420 typeInterpretation:PartialComplexTypeInterpretation)
48421{
48422 find interpretation(problem,interpretation);
48423 neg find hasElementInContainment(problem,interpretation);
48424 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48425 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
48426 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
48427 find mayExist(problem, interpretation, newObject);
48428 neg find mustExist(problem, interpretation, newObject);
48429}
48430pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
48431 problem:LogicProblem, interpretation:PartialInterpretation,
48432 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
48433 container:DefinedElement)
48434{
48435 find interpretation(problem,interpretation);
48436 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48437 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
48438 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
48439 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
48440 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
48441 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
48442 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
48443 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
48444 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
48445 find mustExist(problem, interpretation, container);
48446 neg find mustExist(problem, interpretation, newObject);
48447}
48448pattern createObject_InformationLink_class(
48449 problem:LogicProblem, interpretation:PartialInterpretation,
48450 typeInterpretation:PartialComplexTypeInterpretation)
48451{
48452 find interpretation(problem,interpretation);
48453 neg find hasElementInContainment(problem,interpretation);
48454 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48455 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
48456 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
48457 find mayExist(problem, interpretation, newObject);
48458 neg find mustExist(problem, interpretation, newObject);
48459}
48460
48461//////////
48462// 4.2 Type refinement
48463//////////
48464pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
48465 find interpretation(problem,interpretation);
48466 PartialInterpretation.newElements(interpretation,element);
48467 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48468 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48469 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48470 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48471 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48472 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48473 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48474}
48475pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
48476 find interpretation(problem,interpretation);
48477 PartialInterpretation.newElements(interpretation,element);
48478 find mayInstanceOfFunction_class(problem,interpretation,element);
48479 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48480 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48481 neg find mustInstanceOfFunction_class(problem,interpretation,element);
48482 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48483 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48484 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48485}
48486pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
48487 find interpretation(problem,interpretation);
48488 PartialInterpretation.newElements(interpretation,element);
48489 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
48490 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48491 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48492 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48493 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48494 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48495 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48496}
48497pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
48498 find interpretation(problem,interpretation);
48499 PartialInterpretation.newElements(interpretation,element);
48500 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
48501 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48502 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48503 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
48504 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48505 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
48506 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48507 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48508}
48509pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
48510 find interpretation(problem,interpretation);
48511 PartialInterpretation.newElements(interpretation,element);
48512 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
48513 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48514 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48515 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48516 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48517 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48518 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48519}
48520pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
48521 find interpretation(problem,interpretation);
48522 PartialInterpretation.newElements(interpretation,element);
48523 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
48524 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48525 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48526 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
48527 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48528 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
48529 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48530 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48531}
48532pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
48533 find interpretation(problem,interpretation);
48534 PartialInterpretation.newElements(interpretation,element);
48535 find mayInstanceOfInformationLink_class(problem,interpretation,element);
48536 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48537 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48538 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48539 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48540 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48541 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48542}
48543
48544//////////
48545// 4.3 Relation refinement
48546//////////
48547pattern refineRelation_model_reference_FunctionalElement(
48548 problem:LogicProblem, interpretation:PartialInterpretation,
48549 relationIterpretation:PartialRelationInterpretation,
48550 from: DefinedElement, to: DefinedElement)
48551{
48552 find interpretation(problem,interpretation);
48553 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48554 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
48555 find mustExist(problem, interpretation, from);
48556 find mustExist(problem, interpretation, to);
48557 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
48558 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
48559 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
48560 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
48561}
48562pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
48563 problem:LogicProblem, interpretation:PartialInterpretation,
48564 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
48565 from: DefinedElement, to: DefinedElement)
48566{
48567 find interpretation(problem,interpretation);
48568 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48569 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
48570 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
48571 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
48572 find mustExist(problem, interpretation, from);
48573 find mustExist(problem, interpretation, to);
48574 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
48575 find mustInstanceOfInformationLink_class(problem,interpretation,to);
48576 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
48577 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
48578}
48579pattern refineRelation_type_attribute_Function(
48580 problem:LogicProblem, interpretation:PartialInterpretation,
48581 relationIterpretation:PartialRelationInterpretation,
48582 from: DefinedElement, to: DefinedElement)
48583{
48584 find interpretation(problem,interpretation);
48585 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48586 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
48587 find mustExist(problem, interpretation, from);
48588 find mustExist(problem, interpretation, to);
48589 find mustInstanceOfFunction_class(problem,interpretation,from);
48590 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
48591 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
48592 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
48593}
48594import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
48595import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
48596import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
48597
48598//////////
48599// 0. Util
48600//////////
48601private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
48602 PartialInterpretation.problem(interpretation,problem);
48603}
48604
48605/////////////////////////
48606// 0.1 Existence
48607/////////////////////////
48608private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
48609 find interpretation(problem,interpretation);
48610 LogicProblem.elements(problem,element);
48611} or {
48612 find interpretation(problem,interpretation);
48613 PartialInterpretation.newElements(interpretation,element);
48614}
48615
48616private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
48617 find mustExist(problem,interpretation,element);
48618} or {
48619 find interpretation(problem,interpretation);
48620 neg find elementCloseWorld(element);
48621 PartialInterpretation.openWorldElements(interpretation,element);
48622}
48623
48624private pattern elementCloseWorld(element:DefinedElement) {
48625 PartialInterpretation.openWorldElements(i,element);
48626 PartialInterpretation.maxNewElements(i,0);
48627} or {
48628 Scope.targetTypeInterpretation(scope,interpretation);
48629 PartialTypeInterpratation.elements(interpretation,element);
48630 Scope.maxNewElements(scope,0);
48631}
48632
48633////////////////////////
48634// 0.2 Equivalence
48635////////////////////////
48636pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
48637 find mayExist(problem,interpretation,a);
48638 find mayExist(problem,interpretation,b);
48639 a == b;
48640}
48641
48642////////////////////////
48643// 0.3 Required Patterns by TypeIndexer
48644////////////////////////
48645private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
48646 find interpretation(problem,interpretation);
48647 LogicProblem.types(problem,type);
48648 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
48649 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
48650}
48651
48652private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
48653 find interpretation(problem,interpretation);
48654 LogicProblem.types(problem,type);
48655 TypeDefinition.elements(type,element);
48656} or {
48657 find interpretation(problem,interpretation);
48658 find typeInterpretation(problem,interpretation,type,typeInterpretation);
48659 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
48660}
48661
48662private pattern isPrimitive(element: PrimitiveElement) {
48663 PrimitiveElement(element);
48664}
48665
48666//////////
48667// 1. Problem-Specific Base Indexers
48668//////////
48669// 1.1 Type Indexers
48670//////////
48671// 1.1.1 primitive Type Indexers
48672//////////
48673
48674//////////
48675// 1.1.2 domain-specific Type Indexers
48676//////////
48677/**
48678 * An element must be an instance of type "FunctionalElement class".
48679 */
48680private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
48681 Type.name(type,"FunctionalElement class");
48682 find directInstanceOf(problem,interpretation,element,type);
48683}
48684private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
48685 find interpretation(problem,interpretation);
48686 PartialInterpretation.scopes(interpretation,scope);
48687 Scope.targetTypeInterpretation(scope,typeInterpretation);
48688 Scope.maxNewElements(scope,0);
48689 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
48690 Type.name(type,"FunctionalElement class");
48691}
48692
48693/**
48694 * An element may be an instance of type "FunctionalElement class".
48695 */
48696private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
48697{
48698 find interpretation(problem,interpretation);
48699 PartialInterpretation.newElements(interpretation,element);
48700 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48701 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48702 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48703 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48704 neg find mustInstanceOfFunction_class(problem,interpretation,element);
48705 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48706 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
48707 neg find isPrimitive(element);
48708} or {
48709 find interpretation(problem,interpretation);
48710 PartialInterpretation.openWorldElements(interpretation,element);
48711 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48712 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48713 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48714 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48715 neg find mustInstanceOfFunction_class(problem,interpretation,element);
48716 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48717 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
48718 neg find isPrimitive(element);
48719} or
48720{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
48721/**
48722 * An element must be an instance of type "FunctionalArchitectureModel class".
48723 */
48724private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
48725 Type.name(type,"FunctionalArchitectureModel class");
48726 find directInstanceOf(problem,interpretation,element,type);
48727}
48728private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
48729 find interpretation(problem,interpretation);
48730 PartialInterpretation.scopes(interpretation,scope);
48731 Scope.targetTypeInterpretation(scope,typeInterpretation);
48732 Scope.maxNewElements(scope,0);
48733 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
48734 Type.name(type,"FunctionalArchitectureModel class");
48735}
48736
48737/**
48738 * An element may be an instance of type "FunctionalArchitectureModel class".
48739 */
48740private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
48741{
48742 find interpretation(problem,interpretation);
48743 PartialInterpretation.newElements(interpretation,element);
48744 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48745 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48746 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48747 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48748 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48749 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
48750 neg find isPrimitive(element);
48751} or {
48752 find interpretation(problem,interpretation);
48753 PartialInterpretation.openWorldElements(interpretation,element);
48754 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48755 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48756 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48757 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48758 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48759 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
48760 neg find isPrimitive(element);
48761} or
48762{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
48763/**
48764 * An element must be an instance of type "Function class".
48765 */
48766private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
48767 Type.name(type,"Function class");
48768 find directInstanceOf(problem,interpretation,element,type);
48769}
48770private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
48771 find interpretation(problem,interpretation);
48772 PartialInterpretation.scopes(interpretation,scope);
48773 Scope.targetTypeInterpretation(scope,typeInterpretation);
48774 Scope.maxNewElements(scope,0);
48775 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
48776 Type.name(type,"Function class");
48777}
48778
48779/**
48780 * An element may be an instance of type "Function class".
48781 */
48782private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
48783{
48784 find interpretation(problem,interpretation);
48785 PartialInterpretation.newElements(interpretation,element);
48786 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48787 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48788 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48789 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48790 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48791 neg find scopeDisallowsNewFunction_class(problem, interpretation);
48792 neg find isPrimitive(element);
48793} or {
48794 find interpretation(problem,interpretation);
48795 PartialInterpretation.openWorldElements(interpretation,element);
48796 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48797 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48798 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48799 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48800 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48801 neg find scopeDisallowsNewFunction_class(problem, interpretation);
48802 neg find isPrimitive(element);
48803} or
48804{ find mustInstanceOfFunction_class(problem,interpretation,element); }
48805/**
48806 * An element must be an instance of type "FAMTerminator class".
48807 */
48808private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
48809 Type.name(type,"FAMTerminator class");
48810 find directInstanceOf(problem,interpretation,element,type);
48811}
48812private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
48813 find interpretation(problem,interpretation);
48814 PartialInterpretation.scopes(interpretation,scope);
48815 Scope.targetTypeInterpretation(scope,typeInterpretation);
48816 Scope.maxNewElements(scope,0);
48817 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
48818 Type.name(type,"FAMTerminator class");
48819}
48820
48821/**
48822 * An element may be an instance of type "FAMTerminator class".
48823 */
48824private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
48825{
48826 find interpretation(problem,interpretation);
48827 PartialInterpretation.newElements(interpretation,element);
48828 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48829 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48830 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48831 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48832 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48833 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
48834 neg find isPrimitive(element);
48835} or {
48836 find interpretation(problem,interpretation);
48837 PartialInterpretation.openWorldElements(interpretation,element);
48838 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48839 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48840 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48841 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48842 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48843 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
48844 neg find isPrimitive(element);
48845} or
48846{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
48847/**
48848 * An element must be an instance of type "InformationLink class".
48849 */
48850private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
48851 Type.name(type,"InformationLink class");
48852 find directInstanceOf(problem,interpretation,element,type);
48853}
48854private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
48855 find interpretation(problem,interpretation);
48856 PartialInterpretation.scopes(interpretation,scope);
48857 Scope.targetTypeInterpretation(scope,typeInterpretation);
48858 Scope.maxNewElements(scope,0);
48859 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
48860 Type.name(type,"InformationLink class");
48861}
48862
48863/**
48864 * An element may be an instance of type "InformationLink class".
48865 */
48866private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
48867{
48868 find interpretation(problem,interpretation);
48869 PartialInterpretation.newElements(interpretation,element);
48870 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48871 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48872 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48873 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48874 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48875 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
48876 neg find isPrimitive(element);
48877} or {
48878 find interpretation(problem,interpretation);
48879 PartialInterpretation.openWorldElements(interpretation,element);
48880 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48881 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48882 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48883 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48884 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48885 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
48886 neg find isPrimitive(element);
48887} or
48888{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
48889/**
48890 * An element must be an instance of type "FunctionalInterface class".
48891 */
48892private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
48893 Type.name(type,"FunctionalInterface class");
48894 find directInstanceOf(problem,interpretation,element,type);
48895}
48896private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
48897 find interpretation(problem,interpretation);
48898 PartialInterpretation.scopes(interpretation,scope);
48899 Scope.targetTypeInterpretation(scope,typeInterpretation);
48900 Scope.maxNewElements(scope,0);
48901 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
48902 Type.name(type,"FunctionalInterface class");
48903}
48904
48905/**
48906 * An element may be an instance of type "FunctionalInterface class".
48907 */
48908private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
48909{
48910 find interpretation(problem,interpretation);
48911 PartialInterpretation.newElements(interpretation,element);
48912 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48913 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48914 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48915 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48916 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48917 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
48918 neg find isPrimitive(element);
48919} or {
48920 find interpretation(problem,interpretation);
48921 PartialInterpretation.openWorldElements(interpretation,element);
48922 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48923 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48924 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
48925 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48926 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48927 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
48928 neg find isPrimitive(element);
48929} or
48930{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
48931/**
48932 * An element must be an instance of type "FunctionalInput class".
48933 */
48934private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
48935 Type.name(type,"FunctionalInput class");
48936 find directInstanceOf(problem,interpretation,element,type);
48937}
48938private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
48939 find interpretation(problem,interpretation);
48940 PartialInterpretation.scopes(interpretation,scope);
48941 Scope.targetTypeInterpretation(scope,typeInterpretation);
48942 Scope.maxNewElements(scope,0);
48943 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
48944 Type.name(type,"FunctionalInput class");
48945}
48946
48947/**
48948 * An element may be an instance of type "FunctionalInput class".
48949 */
48950private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
48951{
48952 find interpretation(problem,interpretation);
48953 PartialInterpretation.newElements(interpretation,element);
48954 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48955 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48956 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48957 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48958 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48959 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
48960 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
48961 neg find isPrimitive(element);
48962} or {
48963 find interpretation(problem,interpretation);
48964 PartialInterpretation.openWorldElements(interpretation,element);
48965 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48966 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
48967 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
48968 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
48969 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
48970 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
48971 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
48972 neg find isPrimitive(element);
48973} or
48974{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
48975/**
48976 * An element must be an instance of type "FunctionalOutput class".
48977 */
48978private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
48979 Type.name(type,"FunctionalOutput class");
48980 find directInstanceOf(problem,interpretation,element,type);
48981}
48982private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
48983 find interpretation(problem,interpretation);
48984 PartialInterpretation.scopes(interpretation,scope);
48985 Scope.targetTypeInterpretation(scope,typeInterpretation);
48986 Scope.maxNewElements(scope,0);
48987 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
48988 Type.name(type,"FunctionalOutput class");
48989}
48990
48991/**
48992 * An element may be an instance of type "FunctionalOutput class".
48993 */
48994private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
48995{
48996 find interpretation(problem,interpretation);
48997 PartialInterpretation.newElements(interpretation,element);
48998 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
48999 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
49000 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
49001 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
49002 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
49003 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
49004 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
49005 neg find isPrimitive(element);
49006} or {
49007 find interpretation(problem,interpretation);
49008 PartialInterpretation.openWorldElements(interpretation,element);
49009 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
49010 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
49011 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
49012 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
49013 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
49014 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
49015 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
49016 neg find isPrimitive(element);
49017} or
49018{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
49019/**
49020 * An element must be an instance of type "FunctionalData class".
49021 */
49022private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
49023 Type.name(type,"FunctionalData class");
49024 find directInstanceOf(problem,interpretation,element,type);
49025}
49026private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
49027 find interpretation(problem,interpretation);
49028 PartialInterpretation.scopes(interpretation,scope);
49029 Scope.targetTypeInterpretation(scope,typeInterpretation);
49030 Scope.maxNewElements(scope,0);
49031 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
49032 Type.name(type,"FunctionalData class");
49033}
49034
49035/**
49036 * An element may be an instance of type "FunctionalData class".
49037 */
49038private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
49039{
49040 find interpretation(problem,interpretation);
49041 PartialInterpretation.newElements(interpretation,element);
49042 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
49043 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
49044 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
49045 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
49046 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
49047 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
49048 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
49049 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
49050 neg find isPrimitive(element);
49051} or {
49052 find interpretation(problem,interpretation);
49053 PartialInterpretation.openWorldElements(interpretation,element);
49054 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
49055 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
49056 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
49057 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
49058 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
49059 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
49060 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
49061 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
49062 neg find isPrimitive(element);
49063} or
49064{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
49065/**
49066 * An element must be an instance of type "FunctionType enum".
49067 */
49068private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
49069 Type.name(type,"FunctionType enum");
49070 find directInstanceOf(problem,interpretation,element,type);
49071}
49072private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
49073 find interpretation(problem,interpretation);
49074 PartialInterpretation.scopes(interpretation,scope);
49075 Scope.targetTypeInterpretation(scope,typeInterpretation);
49076 Scope.maxNewElements(scope,0);
49077 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
49078 Type.name(type,"FunctionType enum");
49079}
49080
49081/**
49082 * An element may be an instance of type "FunctionType enum".
49083 */
49084private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
49085{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
49086
49087//////////
49088// 1.2 Relation Declaration Indexers
49089//////////
49090/**
49091 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
49092 */
49093private pattern mustInRelationinterface_reference_FunctionalElement(
49094 problem:LogicProblem, interpretation:PartialInterpretation,
49095 source: DefinedElement, target:DefinedElement)
49096{
49097 find interpretation(problem,interpretation);
49098 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49099 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
49100 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49101 BinaryElementRelationLink.param1(link,source);
49102 BinaryElementRelationLink.param2(link,target);
49103}
49104/**
49105 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
49106 */
49107private pattern mayInRelationinterface_reference_FunctionalElement(
49108 problem:LogicProblem, interpretation:PartialInterpretation,
49109 source: DefinedElement, target:DefinedElement)
49110{
49111 find interpretation(problem,interpretation);
49112 // The two endpoint of the link have to exist
49113 find mayExist(problem, interpretation, source);
49114 find mayExist(problem, interpretation, target);
49115 // Type consistency
49116 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
49117 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
49118 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49119 // the upper bound of the multiplicity should be considered.
49120 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
49121 check(numberOfExistingReferences < 1);
49122 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
49123 // the upper bound of the opposite reference multiplicity should be considered.
49124 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
49125 check(numberOfExistingOppositeReferences < 1);
49126 // The reference is containment, then a new reference cannot be create if:
49127 // 1. Multiple parents
49128 neg find mustContains4(problem,interpretation,_,target);
49129 // 2. Circle in the containment hierarchy
49130 neg find mustTransitiveContains(source,target);
49131} or {
49132 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
49133}
49134/**
49135 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
49136 */
49137private pattern mustInRelationmodel_reference_FunctionalElement(
49138 problem:LogicProblem, interpretation:PartialInterpretation,
49139 source: DefinedElement, target:DefinedElement)
49140{
49141 find interpretation(problem,interpretation);
49142 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49143 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
49144 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49145 BinaryElementRelationLink.param1(link,source);
49146 BinaryElementRelationLink.param2(link,target);
49147}
49148/**
49149 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
49150 */
49151private pattern mayInRelationmodel_reference_FunctionalElement(
49152 problem:LogicProblem, interpretation:PartialInterpretation,
49153 source: DefinedElement, target:DefinedElement)
49154{
49155 find interpretation(problem,interpretation);
49156 // The two endpoint of the link have to exist
49157 find mayExist(problem, interpretation, source);
49158 find mayExist(problem, interpretation, target);
49159 // Type consistency
49160 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
49161 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
49162 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49163 // the upper bound of the multiplicity should be considered.
49164 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
49165 check(numberOfExistingReferences < 1);
49166} or {
49167 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
49168}
49169/**
49170 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
49171 */
49172private pattern mustInRelationparent_reference_FunctionalElement(
49173 problem:LogicProblem, interpretation:PartialInterpretation,
49174 source: DefinedElement, target:DefinedElement)
49175{
49176 find interpretation(problem,interpretation);
49177 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49178 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
49179 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49180 BinaryElementRelationLink.param1(link,source);
49181 BinaryElementRelationLink.param2(link,target);
49182}
49183/**
49184 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
49185 */
49186private pattern mayInRelationparent_reference_FunctionalElement(
49187 problem:LogicProblem, interpretation:PartialInterpretation,
49188 source: DefinedElement, target:DefinedElement)
49189{
49190 find interpretation(problem,interpretation);
49191 // The two endpoint of the link have to exist
49192 find mayExist(problem, interpretation, source);
49193 find mayExist(problem, interpretation, target);
49194 // Type consistency
49195 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
49196 find mayInstanceOfFunction_class(problem,interpretation,target);
49197 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49198 // the upper bound of the multiplicity should be considered.
49199 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
49200 check(numberOfExistingReferences < 1);
49201 // The eOpposite of the reference is containment, then a referene cannot be created if
49202 // 1. Multiple parents
49203 neg find mustContains4(problem,interpretation,source,_);
49204 // 2. Circle in the containment hierarchy
49205 neg find mustTransitiveContains(source,target);
49206} or {
49207 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
49208}
49209/**
49210 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
49211 */
49212private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
49213 problem:LogicProblem, interpretation:PartialInterpretation,
49214 source: DefinedElement, target:DefinedElement)
49215{
49216 find interpretation(problem,interpretation);
49217 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49218 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
49219 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49220 BinaryElementRelationLink.param1(link,source);
49221 BinaryElementRelationLink.param2(link,target);
49222}
49223/**
49224 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
49225 */
49226private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
49227 problem:LogicProblem, interpretation:PartialInterpretation,
49228 source: DefinedElement, target:DefinedElement)
49229{
49230 find interpretation(problem,interpretation);
49231 // The two endpoint of the link have to exist
49232 find mayExist(problem, interpretation, source);
49233 find mayExist(problem, interpretation, target);
49234 // Type consistency
49235 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
49236 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
49237 // The reference is containment, then a new reference cannot be create if:
49238 // 1. Multiple parents
49239 neg find mustContains4(problem,interpretation,_,target);
49240 // 2. Circle in the containment hierarchy
49241 neg find mustTransitiveContains(source,target);
49242} or {
49243 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
49244}
49245/**
49246 * Matcher for detecting tuples t where []subElements reference Function(source,target)
49247 */
49248private pattern mustInRelationsubElements_reference_Function(
49249 problem:LogicProblem, interpretation:PartialInterpretation,
49250 source: DefinedElement, target:DefinedElement)
49251{
49252 find interpretation(problem,interpretation);
49253 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49254 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
49255 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49256 BinaryElementRelationLink.param1(link,source);
49257 BinaryElementRelationLink.param2(link,target);
49258}
49259/**
49260 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
49261 */
49262private pattern mayInRelationsubElements_reference_Function(
49263 problem:LogicProblem, interpretation:PartialInterpretation,
49264 source: DefinedElement, target:DefinedElement)
49265{
49266 find interpretation(problem,interpretation);
49267 // The two endpoint of the link have to exist
49268 find mayExist(problem, interpretation, source);
49269 find mayExist(problem, interpretation, target);
49270 // Type consistency
49271 find mayInstanceOfFunction_class(problem,interpretation,source);
49272 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
49273 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
49274 // the upper bound of the opposite reference multiplicity should be considered.
49275 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
49276 check(numberOfExistingOppositeReferences < 1);
49277 // The reference is containment, then a new reference cannot be create if:
49278 // 1. Multiple parents
49279 neg find mustContains4(problem,interpretation,_,target);
49280 // 2. Circle in the containment hierarchy
49281 neg find mustTransitiveContains(source,target);
49282} or {
49283 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
49284}
49285/**
49286 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
49287 */
49288private pattern mustInRelationdata_reference_FAMTerminator(
49289 problem:LogicProblem, interpretation:PartialInterpretation,
49290 source: DefinedElement, target:DefinedElement)
49291{
49292 find interpretation(problem,interpretation);
49293 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49294 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
49295 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49296 BinaryElementRelationLink.param1(link,source);
49297 BinaryElementRelationLink.param2(link,target);
49298}
49299/**
49300 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
49301 */
49302private pattern mayInRelationdata_reference_FAMTerminator(
49303 problem:LogicProblem, interpretation:PartialInterpretation,
49304 source: DefinedElement, target:DefinedElement)
49305{
49306 find interpretation(problem,interpretation);
49307 // The two endpoint of the link have to exist
49308 find mayExist(problem, interpretation, source);
49309 find mayExist(problem, interpretation, target);
49310 // Type consistency
49311 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
49312 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
49313 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49314 // the upper bound of the multiplicity should be considered.
49315 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
49316 check(numberOfExistingReferences < 1);
49317 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
49318 // the upper bound of the opposite reference multiplicity should be considered.
49319 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
49320 check(numberOfExistingOppositeReferences < 1);
49321 // The eOpposite of the reference is containment, then a referene cannot be created if
49322 // 1. Multiple parents
49323 neg find mustContains4(problem,interpretation,source,_);
49324 // 2. Circle in the containment hierarchy
49325 neg find mustTransitiveContains(source,target);
49326} or {
49327 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
49328}
49329/**
49330 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
49331 */
49332private pattern mustInRelationfrom_reference_InformationLink(
49333 problem:LogicProblem, interpretation:PartialInterpretation,
49334 source: DefinedElement, target:DefinedElement)
49335{
49336 find interpretation(problem,interpretation);
49337 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49338 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
49339 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49340 BinaryElementRelationLink.param1(link,source);
49341 BinaryElementRelationLink.param2(link,target);
49342}
49343/**
49344 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
49345 */
49346private pattern mayInRelationfrom_reference_InformationLink(
49347 problem:LogicProblem, interpretation:PartialInterpretation,
49348 source: DefinedElement, target:DefinedElement)
49349{
49350 find interpretation(problem,interpretation);
49351 // The two endpoint of the link have to exist
49352 find mayExist(problem, interpretation, source);
49353 find mayExist(problem, interpretation, target);
49354 // Type consistency
49355 find mayInstanceOfInformationLink_class(problem,interpretation,source);
49356 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
49357 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49358 // the upper bound of the multiplicity should be considered.
49359 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
49360 check(numberOfExistingReferences < 1);
49361 // The eOpposite of the reference is containment, then a referene cannot be created if
49362 // 1. Multiple parents
49363 neg find mustContains4(problem,interpretation,source,_);
49364 // 2. Circle in the containment hierarchy
49365 neg find mustTransitiveContains(source,target);
49366} or {
49367 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
49368}
49369/**
49370 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
49371 */
49372private pattern mustInRelationto_reference_InformationLink(
49373 problem:LogicProblem, interpretation:PartialInterpretation,
49374 source: DefinedElement, target:DefinedElement)
49375{
49376 find interpretation(problem,interpretation);
49377 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49378 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
49379 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49380 BinaryElementRelationLink.param1(link,source);
49381 BinaryElementRelationLink.param2(link,target);
49382}
49383/**
49384 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
49385 */
49386private pattern mayInRelationto_reference_InformationLink(
49387 problem:LogicProblem, interpretation:PartialInterpretation,
49388 source: DefinedElement, target:DefinedElement)
49389{
49390 find interpretation(problem,interpretation);
49391 // The two endpoint of the link have to exist
49392 find mayExist(problem, interpretation, source);
49393 find mayExist(problem, interpretation, target);
49394 // Type consistency
49395 find mayInstanceOfInformationLink_class(problem,interpretation,source);
49396 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
49397 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49398 // the upper bound of the multiplicity should be considered.
49399 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
49400 check(numberOfExistingReferences < 1);
49401} or {
49402 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
49403}
49404/**
49405 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
49406 */
49407private pattern mustInRelationdata_reference_FunctionalInterface(
49408 problem:LogicProblem, interpretation:PartialInterpretation,
49409 source: DefinedElement, target:DefinedElement)
49410{
49411 find interpretation(problem,interpretation);
49412 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49413 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
49414 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49415 BinaryElementRelationLink.param1(link,source);
49416 BinaryElementRelationLink.param2(link,target);
49417}
49418/**
49419 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
49420 */
49421private pattern mayInRelationdata_reference_FunctionalInterface(
49422 problem:LogicProblem, interpretation:PartialInterpretation,
49423 source: DefinedElement, target:DefinedElement)
49424{
49425 find interpretation(problem,interpretation);
49426 // The two endpoint of the link have to exist
49427 find mayExist(problem, interpretation, source);
49428 find mayExist(problem, interpretation, target);
49429 // Type consistency
49430 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
49431 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
49432 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
49433 // the upper bound of the opposite reference multiplicity should be considered.
49434 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
49435 check(numberOfExistingOppositeReferences < 1);
49436 // The reference is containment, then a new reference cannot be create if:
49437 // 1. Multiple parents
49438 neg find mustContains4(problem,interpretation,_,target);
49439 // 2. Circle in the containment hierarchy
49440 neg find mustTransitiveContains(source,target);
49441} or {
49442 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
49443}
49444/**
49445 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
49446 */
49447private pattern mustInRelationelement_reference_FunctionalInterface(
49448 problem:LogicProblem, interpretation:PartialInterpretation,
49449 source: DefinedElement, target:DefinedElement)
49450{
49451 find interpretation(problem,interpretation);
49452 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49453 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
49454 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49455 BinaryElementRelationLink.param1(link,source);
49456 BinaryElementRelationLink.param2(link,target);
49457}
49458/**
49459 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
49460 */
49461private pattern mayInRelationelement_reference_FunctionalInterface(
49462 problem:LogicProblem, interpretation:PartialInterpretation,
49463 source: DefinedElement, target:DefinedElement)
49464{
49465 find interpretation(problem,interpretation);
49466 // The two endpoint of the link have to exist
49467 find mayExist(problem, interpretation, source);
49468 find mayExist(problem, interpretation, target);
49469 // Type consistency
49470 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
49471 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
49472 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49473 // the upper bound of the multiplicity should be considered.
49474 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
49475 check(numberOfExistingReferences < 1);
49476 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
49477 // the upper bound of the opposite reference multiplicity should be considered.
49478 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
49479 check(numberOfExistingOppositeReferences < 1);
49480 // The eOpposite of the reference is containment, then a referene cannot be created if
49481 // 1. Multiple parents
49482 neg find mustContains4(problem,interpretation,source,_);
49483 // 2. Circle in the containment hierarchy
49484 neg find mustTransitiveContains(source,target);
49485} or {
49486 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
49487}
49488/**
49489 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
49490 */
49491private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
49492 problem:LogicProblem, interpretation:PartialInterpretation,
49493 source: DefinedElement, target:DefinedElement)
49494{
49495 find interpretation(problem,interpretation);
49496 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49497 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
49498 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49499 BinaryElementRelationLink.param1(link,source);
49500 BinaryElementRelationLink.param2(link,target);
49501}
49502/**
49503 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
49504 */
49505private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
49506 problem:LogicProblem, interpretation:PartialInterpretation,
49507 source: DefinedElement, target:DefinedElement)
49508{
49509 find interpretation(problem,interpretation);
49510 // The two endpoint of the link have to exist
49511 find mayExist(problem, interpretation, source);
49512 find mayExist(problem, interpretation, target);
49513 // Type consistency
49514 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
49515 find mayInstanceOfInformationLink_class(problem,interpretation,target);
49516 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
49517 // the upper bound of the opposite reference multiplicity should be considered.
49518 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
49519 check(numberOfExistingOppositeReferences < 1);
49520} or {
49521 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
49522}
49523/**
49524 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
49525 */
49526private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
49527 problem:LogicProblem, interpretation:PartialInterpretation,
49528 source: DefinedElement, target:DefinedElement)
49529{
49530 find interpretation(problem,interpretation);
49531 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49532 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
49533 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49534 BinaryElementRelationLink.param1(link,source);
49535 BinaryElementRelationLink.param2(link,target);
49536}
49537/**
49538 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
49539 */
49540private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
49541 problem:LogicProblem, interpretation:PartialInterpretation,
49542 source: DefinedElement, target:DefinedElement)
49543{
49544 find interpretation(problem,interpretation);
49545 // The two endpoint of the link have to exist
49546 find mayExist(problem, interpretation, source);
49547 find mayExist(problem, interpretation, target);
49548 // Type consistency
49549 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
49550 find mayInstanceOfInformationLink_class(problem,interpretation,target);
49551 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
49552 // the upper bound of the opposite reference multiplicity should be considered.
49553 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
49554 check(numberOfExistingOppositeReferences < 1);
49555 // The reference is containment, then a new reference cannot be create if:
49556 // 1. Multiple parents
49557 neg find mustContains4(problem,interpretation,_,target);
49558 // 2. Circle in the containment hierarchy
49559 neg find mustTransitiveContains(source,target);
49560} or {
49561 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
49562}
49563/**
49564 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
49565 */
49566private pattern mustInRelationterminator_reference_FunctionalData(
49567 problem:LogicProblem, interpretation:PartialInterpretation,
49568 source: DefinedElement, target:DefinedElement)
49569{
49570 find interpretation(problem,interpretation);
49571 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49572 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
49573 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49574 BinaryElementRelationLink.param1(link,source);
49575 BinaryElementRelationLink.param2(link,target);
49576}
49577/**
49578 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
49579 */
49580private pattern mayInRelationterminator_reference_FunctionalData(
49581 problem:LogicProblem, interpretation:PartialInterpretation,
49582 source: DefinedElement, target:DefinedElement)
49583{
49584 find interpretation(problem,interpretation);
49585 // The two endpoint of the link have to exist
49586 find mayExist(problem, interpretation, source);
49587 find mayExist(problem, interpretation, target);
49588 // Type consistency
49589 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
49590 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
49591 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49592 // the upper bound of the multiplicity should be considered.
49593 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
49594 check(numberOfExistingReferences < 1);
49595 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
49596 // the upper bound of the opposite reference multiplicity should be considered.
49597 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
49598 check(numberOfExistingOppositeReferences < 1);
49599 // The reference is containment, then a new reference cannot be create if:
49600 // 1. Multiple parents
49601 neg find mustContains4(problem,interpretation,_,target);
49602 // 2. Circle in the containment hierarchy
49603 neg find mustTransitiveContains(source,target);
49604} or {
49605 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
49606}
49607/**
49608 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
49609 */
49610private pattern mustInRelationinterface_reference_FunctionalData(
49611 problem:LogicProblem, interpretation:PartialInterpretation,
49612 source: DefinedElement, target:DefinedElement)
49613{
49614 find interpretation(problem,interpretation);
49615 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49616 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
49617 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49618 BinaryElementRelationLink.param1(link,source);
49619 BinaryElementRelationLink.param2(link,target);
49620}
49621/**
49622 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
49623 */
49624private pattern mayInRelationinterface_reference_FunctionalData(
49625 problem:LogicProblem, interpretation:PartialInterpretation,
49626 source: DefinedElement, target:DefinedElement)
49627{
49628 find interpretation(problem,interpretation);
49629 // The two endpoint of the link have to exist
49630 find mayExist(problem, interpretation, source);
49631 find mayExist(problem, interpretation, target);
49632 // Type consistency
49633 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
49634 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
49635 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49636 // the upper bound of the multiplicity should be considered.
49637 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
49638 check(numberOfExistingReferences < 1);
49639 // The eOpposite of the reference is containment, then a referene cannot be created if
49640 // 1. Multiple parents
49641 neg find mustContains4(problem,interpretation,source,_);
49642 // 2. Circle in the containment hierarchy
49643 neg find mustTransitiveContains(source,target);
49644} or {
49645 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
49646}
49647/**
49648 * Matcher for detecting tuples t where []type attribute Function(source,target)
49649 */
49650private pattern mustInRelationtype_attribute_Function(
49651 problem:LogicProblem, interpretation:PartialInterpretation,
49652 source: DefinedElement, target:DefinedElement)
49653{
49654 find interpretation(problem,interpretation);
49655 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49656 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
49657 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49658 BinaryElementRelationLink.param1(link,source);
49659 BinaryElementRelationLink.param2(link,target);
49660}
49661/**
49662 * Matcher for detecting tuples t where <>type attribute Function(source,target)
49663 */
49664private pattern mayInRelationtype_attribute_Function(
49665 problem:LogicProblem, interpretation:PartialInterpretation,
49666 source: DefinedElement, target:DefinedElement)
49667{
49668 find interpretation(problem,interpretation);
49669 // The two endpoint of the link have to exist
49670 find mayExist(problem, interpretation, source);
49671 find mayExist(problem, interpretation, target);
49672 // Type consistency
49673 find mayInstanceOfFunction_class(problem,interpretation,source);
49674 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
49675 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49676 // the upper bound of the multiplicity should be considered.
49677 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
49678 check(numberOfExistingReferences < 1);
49679} or {
49680 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
49681}
49682
49683//////////
49684// 1.3 Relation Definition Indexers
49685//////////
49686
49687//////////
49688// 1.4 Containment Indexer
49689//////////
49690private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
49691 find mustContains4(_,_,source,target);
49692}
49693
49694private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
49695 source: DefinedElement, target: DefinedElement)
49696 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
49697
49698 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
49699
49700 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
49701
49702 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
49703
49704 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
49705
49706 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
49707
49708private pattern mustTransitiveContains(source,target) {
49709 find mustContains2+(source,target);
49710}
49711
49712//////////
49713// 2. Invalidation Indexers
49714//////////
49715// 2.1 Invalidated by WF Queries
49716//////////
49717
49718//////////
49719// 3. Unfinishedness Indexers
49720//////////
49721// 3.1 Unfinishedness Measured by Multiplicity
49722//////////
49723pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
49724 find interpretation(problem,interpretation);
49725 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49726 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
49727 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
49728 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
49729 check(numberOfExistingReferences < 1);
49730 missingMultiplicity == eval(1-numberOfExistingReferences);
49731}
49732pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
49733 find interpretation(problem,interpretation);
49734 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49735 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
49736 find mustInstanceOfInformationLink_class(problem,interpretation,object);
49737 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
49738 check(numberOfExistingReferences < 1);
49739 missingMultiplicity == eval(1-numberOfExistingReferences);
49740}
49741pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
49742 find interpretation(problem,interpretation);
49743 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49744 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
49745 find mustInstanceOfFunction_class(problem,interpretation,object);
49746 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
49747 check(numberOfExistingReferences < 1);
49748 missingMultiplicity == eval(1-numberOfExistingReferences);
49749}
49750
49751//////////
49752// 3.2 Unfinishedness Measured by WF Queries
49753//////////
49754
49755//////////
49756// 4. Refinement Indexers
49757//////////
49758// 4.1 Object constructors
49759//////////
49760private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
49761{
49762 find interpretation(problem,interpretation);
49763 find mustInstanceOfInformationLink_class(problem,interpretation,root);
49764 find mustExist(problem, interpretation, root);
49765}or{
49766 find interpretation(problem,interpretation);
49767 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
49768 find mustExist(problem, interpretation, root);
49769}or{
49770 find interpretation(problem,interpretation);
49771 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
49772 find mustExist(problem, interpretation, root);
49773}or{
49774 find interpretation(problem,interpretation);
49775 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
49776 find mustExist(problem, interpretation, root);
49777}or{
49778 find interpretation(problem,interpretation);
49779 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
49780 find mustExist(problem, interpretation, root);
49781}or{
49782 find interpretation(problem,interpretation);
49783 find mustInstanceOfFunction_class(problem,interpretation,root);
49784 find mustExist(problem, interpretation, root);
49785}or{
49786 find interpretation(problem,interpretation);
49787 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
49788 find mustExist(problem, interpretation, root);
49789}or{
49790 find interpretation(problem,interpretation);
49791 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
49792 find mustExist(problem, interpretation, root);
49793}or{
49794 find interpretation(problem,interpretation);
49795 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
49796 find mustExist(problem, interpretation, root);
49797}
49798pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
49799 problem:LogicProblem, interpretation:PartialInterpretation,
49800 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
49801 container:DefinedElement)
49802{
49803 find interpretation(problem,interpretation);
49804 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49805 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
49806 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
49807 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
49808 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
49809 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
49810 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
49811 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
49812 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
49813 find mustExist(problem, interpretation, container);
49814 neg find mustExist(problem, interpretation, newObject);
49815}
49816pattern createObject_FAMTerminator_class(
49817 problem:LogicProblem, interpretation:PartialInterpretation,
49818 typeInterpretation:PartialComplexTypeInterpretation)
49819{
49820 find interpretation(problem,interpretation);
49821 neg find hasElementInContainment(problem,interpretation);
49822 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49823 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
49824 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
49825 find mayExist(problem, interpretation, newObject);
49826 neg find mustExist(problem, interpretation, newObject);
49827}
49828pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
49829 problem:LogicProblem, interpretation:PartialInterpretation,
49830 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
49831 container:DefinedElement)
49832{
49833 find interpretation(problem,interpretation);
49834 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49835 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
49836 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
49837 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
49838 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
49839 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
49840 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
49841 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
49842 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
49843 find mustExist(problem, interpretation, container);
49844 neg find mustExist(problem, interpretation, newObject);
49845}
49846pattern createObject_InformationLink_class(
49847 problem:LogicProblem, interpretation:PartialInterpretation,
49848 typeInterpretation:PartialComplexTypeInterpretation)
49849{
49850 find interpretation(problem,interpretation);
49851 neg find hasElementInContainment(problem,interpretation);
49852 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49853 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
49854 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
49855 find mayExist(problem, interpretation, newObject);
49856 neg find mustExist(problem, interpretation, newObject);
49857}
49858pattern createObject_FunctionalArchitectureModel_class(
49859 problem:LogicProblem, interpretation:PartialInterpretation,
49860 typeInterpretation:PartialComplexTypeInterpretation)
49861{
49862 find interpretation(problem,interpretation);
49863 neg find hasElementInContainment(problem,interpretation);
49864 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49865 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class");
49866 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject);
49867 find mayExist(problem, interpretation, newObject);
49868 neg find mustExist(problem, interpretation, newObject);
49869}
49870pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
49871 problem:LogicProblem, interpretation:PartialInterpretation,
49872 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
49873 container:DefinedElement)
49874{
49875 find interpretation(problem,interpretation);
49876 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49877 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
49878 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
49879 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
49880 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
49881 find mayInstanceOfFunction_class(problem,interpretation,newObject);
49882 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
49883 find mustExist(problem, interpretation, container);
49884 neg find mustExist(problem, interpretation, newObject);
49885}
49886pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
49887 problem:LogicProblem, interpretation:PartialInterpretation,
49888 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
49889 container:DefinedElement)
49890{
49891 find interpretation(problem,interpretation);
49892 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49893 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
49894 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
49895 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
49896 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
49897 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
49898 find mustInstanceOfFunction_class(problem,interpretation,container);
49899 find mayInstanceOfFunction_class(problem,interpretation,newObject);
49900 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
49901 find mustExist(problem, interpretation, container);
49902 neg find mustExist(problem, interpretation, newObject);
49903}
49904pattern createObject_Function_class(
49905 problem:LogicProblem, interpretation:PartialInterpretation,
49906 typeInterpretation:PartialComplexTypeInterpretation)
49907{
49908 find interpretation(problem,interpretation);
49909 neg find hasElementInContainment(problem,interpretation);
49910 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49911 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
49912 find mayInstanceOfFunction_class(problem,interpretation,newObject);
49913 find mayExist(problem, interpretation, newObject);
49914 neg find mustExist(problem, interpretation, newObject);
49915}
49916pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
49917 problem:LogicProblem, interpretation:PartialInterpretation,
49918 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
49919 container:DefinedElement)
49920{
49921 find interpretation(problem,interpretation);
49922 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49923 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
49924 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
49925 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
49926 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
49927 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
49928 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
49929 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
49930 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
49931 find mustExist(problem, interpretation, container);
49932 neg find mustExist(problem, interpretation, newObject);
49933}
49934pattern createObject_FunctionalInterface_class(
49935 problem:LogicProblem, interpretation:PartialInterpretation,
49936 typeInterpretation:PartialComplexTypeInterpretation)
49937{
49938 find interpretation(problem,interpretation);
49939 neg find hasElementInContainment(problem,interpretation);
49940 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49941 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
49942 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
49943 find mayExist(problem, interpretation, newObject);
49944 neg find mustExist(problem, interpretation, newObject);
49945}
49946pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
49947 problem:LogicProblem, interpretation:PartialInterpretation,
49948 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
49949 container:DefinedElement)
49950{
49951 find interpretation(problem,interpretation);
49952 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49953 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
49954 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
49955 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
49956 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
49957 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
49958 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
49959 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
49960 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
49961 find mustExist(problem, interpretation, container);
49962 neg find mustExist(problem, interpretation, newObject);
49963}
49964pattern createObject_FunctionalOutput_class(
49965 problem:LogicProblem, interpretation:PartialInterpretation,
49966 typeInterpretation:PartialComplexTypeInterpretation)
49967{
49968 find interpretation(problem,interpretation);
49969 neg find hasElementInContainment(problem,interpretation);
49970 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49971 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
49972 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
49973 find mayExist(problem, interpretation, newObject);
49974 neg find mustExist(problem, interpretation, newObject);
49975}
49976pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
49977 problem:LogicProblem, interpretation:PartialInterpretation,
49978 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
49979 container:DefinedElement)
49980{
49981 find interpretation(problem,interpretation);
49982 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
49983 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
49984 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
49985 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
49986 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
49987 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
49988 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
49989 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
49990 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
49991 find mustExist(problem, interpretation, container);
49992 neg find mustExist(problem, interpretation, newObject);
49993}
49994pattern createObject_FunctionalInput_class(
49995 problem:LogicProblem, interpretation:PartialInterpretation,
49996 typeInterpretation:PartialComplexTypeInterpretation)
49997{
49998 find interpretation(problem,interpretation);
49999 neg find hasElementInContainment(problem,interpretation);
50000 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50001 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
50002 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
50003 find mayExist(problem, interpretation, newObject);
50004 neg find mustExist(problem, interpretation, newObject);
50005}
50006
50007//////////
50008// 4.2 Type refinement
50009//////////
50010pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50011 find interpretation(problem,interpretation);
50012 PartialInterpretation.newElements(interpretation,element);
50013 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
50014 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50015 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50016 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50017 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50018 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50019 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50020}
50021pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50022 find interpretation(problem,interpretation);
50023 PartialInterpretation.newElements(interpretation,element);
50024 find mayInstanceOfInformationLink_class(problem,interpretation,element);
50025 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50026 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50027 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50028 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50029 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50030 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50031}
50032pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50033 find interpretation(problem,interpretation);
50034 PartialInterpretation.newElements(interpretation,element);
50035 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50036 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50037 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50038 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50039 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50040 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50041 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50042}
50043pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50044 find interpretation(problem,interpretation);
50045 PartialInterpretation.newElements(interpretation,element);
50046 find mayInstanceOfFunction_class(problem,interpretation,element);
50047 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50048 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50049 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50050 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50051 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50052 neg find mustInstanceOfFunction_class(problem,interpretation,element);
50053}
50054pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50055 find interpretation(problem,interpretation);
50056 PartialInterpretation.newElements(interpretation,element);
50057 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
50058 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50059 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50060 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50061 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50062 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50063 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50064}
50065pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50066 find interpretation(problem,interpretation);
50067 PartialInterpretation.newElements(interpretation,element);
50068 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
50069 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50070 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50071 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50072 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50073 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50074 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
50075 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
50076}
50077pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50078 find interpretation(problem,interpretation);
50079 PartialInterpretation.newElements(interpretation,element);
50080 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
50081 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50082 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50083 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50084 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50085 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50086 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
50087 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
50088}
50089
50090//////////
50091// 4.3 Relation refinement
50092//////////
50093pattern refineRelation_model_reference_FunctionalElement(
50094 problem:LogicProblem, interpretation:PartialInterpretation,
50095 relationIterpretation:PartialRelationInterpretation,
50096 from: DefinedElement, to: DefinedElement)
50097{
50098 find interpretation(problem,interpretation);
50099 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50100 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
50101 find mustExist(problem, interpretation, from);
50102 find mustExist(problem, interpretation, to);
50103 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
50104 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
50105 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
50106 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
50107}
50108pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
50109 problem:LogicProblem, interpretation:PartialInterpretation,
50110 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
50111 from: DefinedElement, to: DefinedElement)
50112{
50113 find interpretation(problem,interpretation);
50114 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50115 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
50116 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
50117 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
50118 find mustExist(problem, interpretation, from);
50119 find mustExist(problem, interpretation, to);
50120 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
50121 find mustInstanceOfInformationLink_class(problem,interpretation,to);
50122 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
50123 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
50124}
50125pattern refineRelation_type_attribute_Function(
50126 problem:LogicProblem, interpretation:PartialInterpretation,
50127 relationIterpretation:PartialRelationInterpretation,
50128 from: DefinedElement, to: DefinedElement)
50129{
50130 find interpretation(problem,interpretation);
50131 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50132 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
50133 find mustExist(problem, interpretation, from);
50134 find mustExist(problem, interpretation, to);
50135 find mustInstanceOfFunction_class(problem,interpretation,from);
50136 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
50137 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
50138 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
50139}
50140import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
50141import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
50142import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
50143
50144//////////
50145// 0. Util
50146//////////
50147private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
50148 PartialInterpretation.problem(interpretation,problem);
50149}
50150
50151/////////////////////////
50152// 0.1 Existence
50153/////////////////////////
50154private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50155 find interpretation(problem,interpretation);
50156 LogicProblem.elements(problem,element);
50157} or {
50158 find interpretation(problem,interpretation);
50159 PartialInterpretation.newElements(interpretation,element);
50160}
50161
50162private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50163 find mustExist(problem,interpretation,element);
50164} or {
50165 find interpretation(problem,interpretation);
50166 neg find elementCloseWorld(element);
50167 PartialInterpretation.openWorldElements(interpretation,element);
50168}
50169
50170private pattern elementCloseWorld(element:DefinedElement) {
50171 PartialInterpretation.openWorldElements(i,element);
50172 PartialInterpretation.maxNewElements(i,0);
50173} or {
50174 Scope.targetTypeInterpretation(scope,interpretation);
50175 PartialTypeInterpratation.elements(interpretation,element);
50176 Scope.maxNewElements(scope,0);
50177}
50178
50179////////////////////////
50180// 0.2 Equivalence
50181////////////////////////
50182pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
50183 find mayExist(problem,interpretation,a);
50184 find mayExist(problem,interpretation,b);
50185 a == b;
50186}
50187
50188////////////////////////
50189// 0.3 Required Patterns by TypeIndexer
50190////////////////////////
50191private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
50192 find interpretation(problem,interpretation);
50193 LogicProblem.types(problem,type);
50194 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50195 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50196}
50197
50198private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
50199 find interpretation(problem,interpretation);
50200 LogicProblem.types(problem,type);
50201 TypeDefinition.elements(type,element);
50202} or {
50203 find interpretation(problem,interpretation);
50204 find typeInterpretation(problem,interpretation,type,typeInterpretation);
50205 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
50206}
50207
50208private pattern isPrimitive(element: PrimitiveElement) {
50209 PrimitiveElement(element);
50210}
50211
50212//////////
50213// 1. Problem-Specific Base Indexers
50214//////////
50215// 1.1 Type Indexers
50216//////////
50217// 1.1.1 primitive Type Indexers
50218//////////
50219
50220//////////
50221// 1.1.2 domain-specific Type Indexers
50222//////////
50223/**
50224 * An element must be an instance of type "FunctionalElement class".
50225 */
50226private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50227 Type.name(type,"FunctionalElement class");
50228 find directInstanceOf(problem,interpretation,element,type);
50229}
50230private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
50231 find interpretation(problem,interpretation);
50232 PartialInterpretation.scopes(interpretation,scope);
50233 Scope.targetTypeInterpretation(scope,typeInterpretation);
50234 Scope.maxNewElements(scope,0);
50235 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50236 Type.name(type,"FunctionalElement class");
50237}
50238
50239/**
50240 * An element may be an instance of type "FunctionalElement class".
50241 */
50242private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
50243{
50244 find interpretation(problem,interpretation);
50245 PartialInterpretation.newElements(interpretation,element);
50246 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50247 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50248 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50249 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50250 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50251 neg find mustInstanceOfFunction_class(problem,interpretation,element);
50252 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
50253 neg find isPrimitive(element);
50254} or {
50255 find interpretation(problem,interpretation);
50256 PartialInterpretation.openWorldElements(interpretation,element);
50257 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50258 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50259 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50260 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50261 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50262 neg find mustInstanceOfFunction_class(problem,interpretation,element);
50263 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
50264 neg find isPrimitive(element);
50265} or
50266{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
50267/**
50268 * An element must be an instance of type "FunctionalArchitectureModel class".
50269 */
50270private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50271 Type.name(type,"FunctionalArchitectureModel class");
50272 find directInstanceOf(problem,interpretation,element,type);
50273}
50274private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
50275 find interpretation(problem,interpretation);
50276 PartialInterpretation.scopes(interpretation,scope);
50277 Scope.targetTypeInterpretation(scope,typeInterpretation);
50278 Scope.maxNewElements(scope,0);
50279 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50280 Type.name(type,"FunctionalArchitectureModel class");
50281}
50282
50283/**
50284 * An element may be an instance of type "FunctionalArchitectureModel class".
50285 */
50286private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
50287{
50288 find interpretation(problem,interpretation);
50289 PartialInterpretation.newElements(interpretation,element);
50290 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50291 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50292 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50293 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50294 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50295 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
50296 neg find isPrimitive(element);
50297} or {
50298 find interpretation(problem,interpretation);
50299 PartialInterpretation.openWorldElements(interpretation,element);
50300 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50301 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50302 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50303 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50304 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50305 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
50306 neg find isPrimitive(element);
50307} or
50308{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
50309/**
50310 * An element must be an instance of type "Function class".
50311 */
50312private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50313 Type.name(type,"Function class");
50314 find directInstanceOf(problem,interpretation,element,type);
50315}
50316private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
50317 find interpretation(problem,interpretation);
50318 PartialInterpretation.scopes(interpretation,scope);
50319 Scope.targetTypeInterpretation(scope,typeInterpretation);
50320 Scope.maxNewElements(scope,0);
50321 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50322 Type.name(type,"Function class");
50323}
50324
50325/**
50326 * An element may be an instance of type "Function class".
50327 */
50328private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
50329{
50330 find interpretation(problem,interpretation);
50331 PartialInterpretation.newElements(interpretation,element);
50332 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50333 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50334 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50335 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50336 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50337 neg find scopeDisallowsNewFunction_class(problem, interpretation);
50338 neg find isPrimitive(element);
50339} or {
50340 find interpretation(problem,interpretation);
50341 PartialInterpretation.openWorldElements(interpretation,element);
50342 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50343 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50344 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50345 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50346 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50347 neg find scopeDisallowsNewFunction_class(problem, interpretation);
50348 neg find isPrimitive(element);
50349} or
50350{ find mustInstanceOfFunction_class(problem,interpretation,element); }
50351/**
50352 * An element must be an instance of type "FAMTerminator class".
50353 */
50354private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50355 Type.name(type,"FAMTerminator class");
50356 find directInstanceOf(problem,interpretation,element,type);
50357}
50358private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
50359 find interpretation(problem,interpretation);
50360 PartialInterpretation.scopes(interpretation,scope);
50361 Scope.targetTypeInterpretation(scope,typeInterpretation);
50362 Scope.maxNewElements(scope,0);
50363 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50364 Type.name(type,"FAMTerminator class");
50365}
50366
50367/**
50368 * An element may be an instance of type "FAMTerminator class".
50369 */
50370private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
50371{
50372 find interpretation(problem,interpretation);
50373 PartialInterpretation.newElements(interpretation,element);
50374 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50375 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50376 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50377 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50378 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50379 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
50380 neg find isPrimitive(element);
50381} or {
50382 find interpretation(problem,interpretation);
50383 PartialInterpretation.openWorldElements(interpretation,element);
50384 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50385 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50386 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50387 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50388 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50389 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
50390 neg find isPrimitive(element);
50391} or
50392{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
50393/**
50394 * An element must be an instance of type "InformationLink class".
50395 */
50396private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50397 Type.name(type,"InformationLink class");
50398 find directInstanceOf(problem,interpretation,element,type);
50399}
50400private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
50401 find interpretation(problem,interpretation);
50402 PartialInterpretation.scopes(interpretation,scope);
50403 Scope.targetTypeInterpretation(scope,typeInterpretation);
50404 Scope.maxNewElements(scope,0);
50405 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50406 Type.name(type,"InformationLink class");
50407}
50408
50409/**
50410 * An element may be an instance of type "InformationLink class".
50411 */
50412private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
50413{
50414 find interpretation(problem,interpretation);
50415 PartialInterpretation.newElements(interpretation,element);
50416 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50417 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50418 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50419 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50420 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50421 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
50422 neg find isPrimitive(element);
50423} or {
50424 find interpretation(problem,interpretation);
50425 PartialInterpretation.openWorldElements(interpretation,element);
50426 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50427 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50428 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50429 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50430 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50431 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
50432 neg find isPrimitive(element);
50433} or
50434{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
50435/**
50436 * An element must be an instance of type "FunctionalInterface class".
50437 */
50438private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50439 Type.name(type,"FunctionalInterface class");
50440 find directInstanceOf(problem,interpretation,element,type);
50441}
50442private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
50443 find interpretation(problem,interpretation);
50444 PartialInterpretation.scopes(interpretation,scope);
50445 Scope.targetTypeInterpretation(scope,typeInterpretation);
50446 Scope.maxNewElements(scope,0);
50447 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50448 Type.name(type,"FunctionalInterface class");
50449}
50450
50451/**
50452 * An element may be an instance of type "FunctionalInterface class".
50453 */
50454private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
50455{
50456 find interpretation(problem,interpretation);
50457 PartialInterpretation.newElements(interpretation,element);
50458 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50459 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50460 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50461 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50462 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50463 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
50464 neg find isPrimitive(element);
50465} or {
50466 find interpretation(problem,interpretation);
50467 PartialInterpretation.openWorldElements(interpretation,element);
50468 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50469 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50470 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
50471 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50472 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50473 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
50474 neg find isPrimitive(element);
50475} or
50476{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
50477/**
50478 * An element must be an instance of type "FunctionalInput class".
50479 */
50480private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50481 Type.name(type,"FunctionalInput class");
50482 find directInstanceOf(problem,interpretation,element,type);
50483}
50484private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
50485 find interpretation(problem,interpretation);
50486 PartialInterpretation.scopes(interpretation,scope);
50487 Scope.targetTypeInterpretation(scope,typeInterpretation);
50488 Scope.maxNewElements(scope,0);
50489 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50490 Type.name(type,"FunctionalInput class");
50491}
50492
50493/**
50494 * An element may be an instance of type "FunctionalInput class".
50495 */
50496private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
50497{
50498 find interpretation(problem,interpretation);
50499 PartialInterpretation.newElements(interpretation,element);
50500 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50501 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50502 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50503 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50504 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50505 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
50506 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
50507 neg find isPrimitive(element);
50508} or {
50509 find interpretation(problem,interpretation);
50510 PartialInterpretation.openWorldElements(interpretation,element);
50511 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50512 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50513 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50514 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50515 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50516 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
50517 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
50518 neg find isPrimitive(element);
50519} or
50520{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
50521/**
50522 * An element must be an instance of type "FunctionalOutput class".
50523 */
50524private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50525 Type.name(type,"FunctionalOutput class");
50526 find directInstanceOf(problem,interpretation,element,type);
50527}
50528private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
50529 find interpretation(problem,interpretation);
50530 PartialInterpretation.scopes(interpretation,scope);
50531 Scope.targetTypeInterpretation(scope,typeInterpretation);
50532 Scope.maxNewElements(scope,0);
50533 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50534 Type.name(type,"FunctionalOutput class");
50535}
50536
50537/**
50538 * An element may be an instance of type "FunctionalOutput class".
50539 */
50540private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
50541{
50542 find interpretation(problem,interpretation);
50543 PartialInterpretation.newElements(interpretation,element);
50544 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50545 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50546 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
50547 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50548 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50549 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50550 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
50551 neg find isPrimitive(element);
50552} or {
50553 find interpretation(problem,interpretation);
50554 PartialInterpretation.openWorldElements(interpretation,element);
50555 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50556 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50557 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
50558 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50559 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50560 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50561 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
50562 neg find isPrimitive(element);
50563} or
50564{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
50565/**
50566 * An element must be an instance of type "FunctionalData class".
50567 */
50568private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50569 Type.name(type,"FunctionalData class");
50570 find directInstanceOf(problem,interpretation,element,type);
50571}
50572private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
50573 find interpretation(problem,interpretation);
50574 PartialInterpretation.scopes(interpretation,scope);
50575 Scope.targetTypeInterpretation(scope,typeInterpretation);
50576 Scope.maxNewElements(scope,0);
50577 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50578 Type.name(type,"FunctionalData class");
50579}
50580
50581/**
50582 * An element may be an instance of type "FunctionalData class".
50583 */
50584private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
50585{
50586 find interpretation(problem,interpretation);
50587 PartialInterpretation.newElements(interpretation,element);
50588 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50589 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50590 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
50591 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50592 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50593 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50594 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
50595 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
50596 neg find isPrimitive(element);
50597} or {
50598 find interpretation(problem,interpretation);
50599 PartialInterpretation.openWorldElements(interpretation,element);
50600 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
50601 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
50602 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
50603 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
50604 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
50605 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
50606 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
50607 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
50608 neg find isPrimitive(element);
50609} or
50610{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
50611/**
50612 * An element must be an instance of type "FunctionType enum".
50613 */
50614private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
50615 Type.name(type,"FunctionType enum");
50616 find directInstanceOf(problem,interpretation,element,type);
50617}
50618private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
50619 find interpretation(problem,interpretation);
50620 PartialInterpretation.scopes(interpretation,scope);
50621 Scope.targetTypeInterpretation(scope,typeInterpretation);
50622 Scope.maxNewElements(scope,0);
50623 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
50624 Type.name(type,"FunctionType enum");
50625}
50626
50627/**
50628 * An element may be an instance of type "FunctionType enum".
50629 */
50630private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
50631{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
50632
50633//////////
50634// 1.2 Relation Declaration Indexers
50635//////////
50636/**
50637 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
50638 */
50639private pattern mustInRelationinterface_reference_FunctionalElement(
50640 problem:LogicProblem, interpretation:PartialInterpretation,
50641 source: DefinedElement, target:DefinedElement)
50642{
50643 find interpretation(problem,interpretation);
50644 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50645 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
50646 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
50647 BinaryElementRelationLink.param1(link,source);
50648 BinaryElementRelationLink.param2(link,target);
50649}
50650/**
50651 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
50652 */
50653private pattern mayInRelationinterface_reference_FunctionalElement(
50654 problem:LogicProblem, interpretation:PartialInterpretation,
50655 source: DefinedElement, target:DefinedElement)
50656{
50657 find interpretation(problem,interpretation);
50658 // The two endpoint of the link have to exist
50659 find mayExist(problem, interpretation, source);
50660 find mayExist(problem, interpretation, target);
50661 // Type consistency
50662 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
50663 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
50664 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
50665 // the upper bound of the multiplicity should be considered.
50666 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
50667 check(numberOfExistingReferences < 1);
50668 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
50669 // the upper bound of the opposite reference multiplicity should be considered.
50670 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
50671 check(numberOfExistingOppositeReferences < 1);
50672 // The reference is containment, then a new reference cannot be create if:
50673 // 1. Multiple parents
50674 neg find mustContains4(problem,interpretation,_,target);
50675 // 2. Circle in the containment hierarchy
50676 neg find mustTransitiveContains(source,target);
50677} or {
50678 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
50679}
50680/**
50681 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
50682 */
50683private pattern mustInRelationmodel_reference_FunctionalElement(
50684 problem:LogicProblem, interpretation:PartialInterpretation,
50685 source: DefinedElement, target:DefinedElement)
50686{
50687 find interpretation(problem,interpretation);
50688 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50689 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
50690 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
50691 BinaryElementRelationLink.param1(link,source);
50692 BinaryElementRelationLink.param2(link,target);
50693}
50694/**
50695 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
50696 */
50697private pattern mayInRelationmodel_reference_FunctionalElement(
50698 problem:LogicProblem, interpretation:PartialInterpretation,
50699 source: DefinedElement, target:DefinedElement)
50700{
50701 find interpretation(problem,interpretation);
50702 // The two endpoint of the link have to exist
50703 find mayExist(problem, interpretation, source);
50704 find mayExist(problem, interpretation, target);
50705 // Type consistency
50706 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
50707 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
50708 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
50709 // the upper bound of the multiplicity should be considered.
50710 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
50711 check(numberOfExistingReferences < 1);
50712} or {
50713 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
50714}
50715/**
50716 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
50717 */
50718private pattern mustInRelationparent_reference_FunctionalElement(
50719 problem:LogicProblem, interpretation:PartialInterpretation,
50720 source: DefinedElement, target:DefinedElement)
50721{
50722 find interpretation(problem,interpretation);
50723 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50724 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
50725 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
50726 BinaryElementRelationLink.param1(link,source);
50727 BinaryElementRelationLink.param2(link,target);
50728}
50729/**
50730 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
50731 */
50732private pattern mayInRelationparent_reference_FunctionalElement(
50733 problem:LogicProblem, interpretation:PartialInterpretation,
50734 source: DefinedElement, target:DefinedElement)
50735{
50736 find interpretation(problem,interpretation);
50737 // The two endpoint of the link have to exist
50738 find mayExist(problem, interpretation, source);
50739 find mayExist(problem, interpretation, target);
50740 // Type consistency
50741 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
50742 find mayInstanceOfFunction_class(problem,interpretation,target);
50743 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
50744 // the upper bound of the multiplicity should be considered.
50745 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
50746 check(numberOfExistingReferences < 1);
50747 // The eOpposite of the reference is containment, then a referene cannot be created if
50748 // 1. Multiple parents
50749 neg find mustContains4(problem,interpretation,source,_);
50750 // 2. Circle in the containment hierarchy
50751 neg find mustTransitiveContains(source,target);
50752} or {
50753 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
50754}
50755/**
50756 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
50757 */
50758private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
50759 problem:LogicProblem, interpretation:PartialInterpretation,
50760 source: DefinedElement, target:DefinedElement)
50761{
50762 find interpretation(problem,interpretation);
50763 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50764 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
50765 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
50766 BinaryElementRelationLink.param1(link,source);
50767 BinaryElementRelationLink.param2(link,target);
50768}
50769/**
50770 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
50771 */
50772private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
50773 problem:LogicProblem, interpretation:PartialInterpretation,
50774 source: DefinedElement, target:DefinedElement)
50775{
50776 find interpretation(problem,interpretation);
50777 // The two endpoint of the link have to exist
50778 find mayExist(problem, interpretation, source);
50779 find mayExist(problem, interpretation, target);
50780 // Type consistency
50781 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
50782 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
50783 // The reference is containment, then a new reference cannot be create if:
50784 // 1. Multiple parents
50785 neg find mustContains4(problem,interpretation,_,target);
50786 // 2. Circle in the containment hierarchy
50787 neg find mustTransitiveContains(source,target);
50788} or {
50789 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
50790}
50791/**
50792 * Matcher for detecting tuples t where []subElements reference Function(source,target)
50793 */
50794private pattern mustInRelationsubElements_reference_Function(
50795 problem:LogicProblem, interpretation:PartialInterpretation,
50796 source: DefinedElement, target:DefinedElement)
50797{
50798 find interpretation(problem,interpretation);
50799 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50800 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
50801 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
50802 BinaryElementRelationLink.param1(link,source);
50803 BinaryElementRelationLink.param2(link,target);
50804}
50805/**
50806 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
50807 */
50808private pattern mayInRelationsubElements_reference_Function(
50809 problem:LogicProblem, interpretation:PartialInterpretation,
50810 source: DefinedElement, target:DefinedElement)
50811{
50812 find interpretation(problem,interpretation);
50813 // The two endpoint of the link have to exist
50814 find mayExist(problem, interpretation, source);
50815 find mayExist(problem, interpretation, target);
50816 // Type consistency
50817 find mayInstanceOfFunction_class(problem,interpretation,source);
50818 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
50819 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
50820 // the upper bound of the opposite reference multiplicity should be considered.
50821 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
50822 check(numberOfExistingOppositeReferences < 1);
50823 // The reference is containment, then a new reference cannot be create if:
50824 // 1. Multiple parents
50825 neg find mustContains4(problem,interpretation,_,target);
50826 // 2. Circle in the containment hierarchy
50827 neg find mustTransitiveContains(source,target);
50828} or {
50829 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
50830}
50831/**
50832 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
50833 */
50834private pattern mustInRelationdata_reference_FAMTerminator(
50835 problem:LogicProblem, interpretation:PartialInterpretation,
50836 source: DefinedElement, target:DefinedElement)
50837{
50838 find interpretation(problem,interpretation);
50839 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50840 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
50841 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
50842 BinaryElementRelationLink.param1(link,source);
50843 BinaryElementRelationLink.param2(link,target);
50844}
50845/**
50846 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
50847 */
50848private pattern mayInRelationdata_reference_FAMTerminator(
50849 problem:LogicProblem, interpretation:PartialInterpretation,
50850 source: DefinedElement, target:DefinedElement)
50851{
50852 find interpretation(problem,interpretation);
50853 // The two endpoint of the link have to exist
50854 find mayExist(problem, interpretation, source);
50855 find mayExist(problem, interpretation, target);
50856 // Type consistency
50857 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
50858 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
50859 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
50860 // the upper bound of the multiplicity should be considered.
50861 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
50862 check(numberOfExistingReferences < 1);
50863 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
50864 // the upper bound of the opposite reference multiplicity should be considered.
50865 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
50866 check(numberOfExistingOppositeReferences < 1);
50867 // The eOpposite of the reference is containment, then a referene cannot be created if
50868 // 1. Multiple parents
50869 neg find mustContains4(problem,interpretation,source,_);
50870 // 2. Circle in the containment hierarchy
50871 neg find mustTransitiveContains(source,target);
50872} or {
50873 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
50874}
50875/**
50876 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
50877 */
50878private pattern mustInRelationfrom_reference_InformationLink(
50879 problem:LogicProblem, interpretation:PartialInterpretation,
50880 source: DefinedElement, target:DefinedElement)
50881{
50882 find interpretation(problem,interpretation);
50883 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50884 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
50885 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
50886 BinaryElementRelationLink.param1(link,source);
50887 BinaryElementRelationLink.param2(link,target);
50888}
50889/**
50890 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
50891 */
50892private pattern mayInRelationfrom_reference_InformationLink(
50893 problem:LogicProblem, interpretation:PartialInterpretation,
50894 source: DefinedElement, target:DefinedElement)
50895{
50896 find interpretation(problem,interpretation);
50897 // The two endpoint of the link have to exist
50898 find mayExist(problem, interpretation, source);
50899 find mayExist(problem, interpretation, target);
50900 // Type consistency
50901 find mayInstanceOfInformationLink_class(problem,interpretation,source);
50902 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
50903 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
50904 // the upper bound of the multiplicity should be considered.
50905 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
50906 check(numberOfExistingReferences < 1);
50907 // The eOpposite of the reference is containment, then a referene cannot be created if
50908 // 1. Multiple parents
50909 neg find mustContains4(problem,interpretation,source,_);
50910 // 2. Circle in the containment hierarchy
50911 neg find mustTransitiveContains(source,target);
50912} or {
50913 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
50914}
50915/**
50916 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
50917 */
50918private pattern mustInRelationto_reference_InformationLink(
50919 problem:LogicProblem, interpretation:PartialInterpretation,
50920 source: DefinedElement, target:DefinedElement)
50921{
50922 find interpretation(problem,interpretation);
50923 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50924 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
50925 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
50926 BinaryElementRelationLink.param1(link,source);
50927 BinaryElementRelationLink.param2(link,target);
50928}
50929/**
50930 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
50931 */
50932private pattern mayInRelationto_reference_InformationLink(
50933 problem:LogicProblem, interpretation:PartialInterpretation,
50934 source: DefinedElement, target:DefinedElement)
50935{
50936 find interpretation(problem,interpretation);
50937 // The two endpoint of the link have to exist
50938 find mayExist(problem, interpretation, source);
50939 find mayExist(problem, interpretation, target);
50940 // Type consistency
50941 find mayInstanceOfInformationLink_class(problem,interpretation,source);
50942 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
50943 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
50944 // the upper bound of the multiplicity should be considered.
50945 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
50946 check(numberOfExistingReferences < 1);
50947} or {
50948 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
50949}
50950/**
50951 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
50952 */
50953private pattern mustInRelationdata_reference_FunctionalInterface(
50954 problem:LogicProblem, interpretation:PartialInterpretation,
50955 source: DefinedElement, target:DefinedElement)
50956{
50957 find interpretation(problem,interpretation);
50958 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50959 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
50960 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
50961 BinaryElementRelationLink.param1(link,source);
50962 BinaryElementRelationLink.param2(link,target);
50963}
50964/**
50965 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
50966 */
50967private pattern mayInRelationdata_reference_FunctionalInterface(
50968 problem:LogicProblem, interpretation:PartialInterpretation,
50969 source: DefinedElement, target:DefinedElement)
50970{
50971 find interpretation(problem,interpretation);
50972 // The two endpoint of the link have to exist
50973 find mayExist(problem, interpretation, source);
50974 find mayExist(problem, interpretation, target);
50975 // Type consistency
50976 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
50977 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
50978 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
50979 // the upper bound of the opposite reference multiplicity should be considered.
50980 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
50981 check(numberOfExistingOppositeReferences < 1);
50982 // The reference is containment, then a new reference cannot be create if:
50983 // 1. Multiple parents
50984 neg find mustContains4(problem,interpretation,_,target);
50985 // 2. Circle in the containment hierarchy
50986 neg find mustTransitiveContains(source,target);
50987} or {
50988 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
50989}
50990/**
50991 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
50992 */
50993private pattern mustInRelationelement_reference_FunctionalInterface(
50994 problem:LogicProblem, interpretation:PartialInterpretation,
50995 source: DefinedElement, target:DefinedElement)
50996{
50997 find interpretation(problem,interpretation);
50998 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50999 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
51000 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
51001 BinaryElementRelationLink.param1(link,source);
51002 BinaryElementRelationLink.param2(link,target);
51003}
51004/**
51005 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
51006 */
51007private pattern mayInRelationelement_reference_FunctionalInterface(
51008 problem:LogicProblem, interpretation:PartialInterpretation,
51009 source: DefinedElement, target:DefinedElement)
51010{
51011 find interpretation(problem,interpretation);
51012 // The two endpoint of the link have to exist
51013 find mayExist(problem, interpretation, source);
51014 find mayExist(problem, interpretation, target);
51015 // Type consistency
51016 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
51017 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
51018 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
51019 // the upper bound of the multiplicity should be considered.
51020 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
51021 check(numberOfExistingReferences < 1);
51022 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
51023 // the upper bound of the opposite reference multiplicity should be considered.
51024 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
51025 check(numberOfExistingOppositeReferences < 1);
51026 // The eOpposite of the reference is containment, then a referene cannot be created if
51027 // 1. Multiple parents
51028 neg find mustContains4(problem,interpretation,source,_);
51029 // 2. Circle in the containment hierarchy
51030 neg find mustTransitiveContains(source,target);
51031} or {
51032 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
51033}
51034/**
51035 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
51036 */
51037private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
51038 problem:LogicProblem, interpretation:PartialInterpretation,
51039 source: DefinedElement, target:DefinedElement)
51040{
51041 find interpretation(problem,interpretation);
51042 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51043 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
51044 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
51045 BinaryElementRelationLink.param1(link,source);
51046 BinaryElementRelationLink.param2(link,target);
51047}
51048/**
51049 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
51050 */
51051private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
51052 problem:LogicProblem, interpretation:PartialInterpretation,
51053 source: DefinedElement, target:DefinedElement)
51054{
51055 find interpretation(problem,interpretation);
51056 // The two endpoint of the link have to exist
51057 find mayExist(problem, interpretation, source);
51058 find mayExist(problem, interpretation, target);
51059 // Type consistency
51060 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
51061 find mayInstanceOfInformationLink_class(problem,interpretation,target);
51062 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
51063 // the upper bound of the opposite reference multiplicity should be considered.
51064 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
51065 check(numberOfExistingOppositeReferences < 1);
51066} or {
51067 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
51068}
51069/**
51070 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
51071 */
51072private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
51073 problem:LogicProblem, interpretation:PartialInterpretation,
51074 source: DefinedElement, target:DefinedElement)
51075{
51076 find interpretation(problem,interpretation);
51077 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51078 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
51079 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
51080 BinaryElementRelationLink.param1(link,source);
51081 BinaryElementRelationLink.param2(link,target);
51082}
51083/**
51084 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
51085 */
51086private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
51087 problem:LogicProblem, interpretation:PartialInterpretation,
51088 source: DefinedElement, target:DefinedElement)
51089{
51090 find interpretation(problem,interpretation);
51091 // The two endpoint of the link have to exist
51092 find mayExist(problem, interpretation, source);
51093 find mayExist(problem, interpretation, target);
51094 // Type consistency
51095 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
51096 find mayInstanceOfInformationLink_class(problem,interpretation,target);
51097 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
51098 // the upper bound of the opposite reference multiplicity should be considered.
51099 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
51100 check(numberOfExistingOppositeReferences < 1);
51101 // The reference is containment, then a new reference cannot be create if:
51102 // 1. Multiple parents
51103 neg find mustContains4(problem,interpretation,_,target);
51104 // 2. Circle in the containment hierarchy
51105 neg find mustTransitiveContains(source,target);
51106} or {
51107 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
51108}
51109/**
51110 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
51111 */
51112private pattern mustInRelationterminator_reference_FunctionalData(
51113 problem:LogicProblem, interpretation:PartialInterpretation,
51114 source: DefinedElement, target:DefinedElement)
51115{
51116 find interpretation(problem,interpretation);
51117 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51118 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
51119 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
51120 BinaryElementRelationLink.param1(link,source);
51121 BinaryElementRelationLink.param2(link,target);
51122}
51123/**
51124 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
51125 */
51126private pattern mayInRelationterminator_reference_FunctionalData(
51127 problem:LogicProblem, interpretation:PartialInterpretation,
51128 source: DefinedElement, target:DefinedElement)
51129{
51130 find interpretation(problem,interpretation);
51131 // The two endpoint of the link have to exist
51132 find mayExist(problem, interpretation, source);
51133 find mayExist(problem, interpretation, target);
51134 // Type consistency
51135 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
51136 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
51137 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
51138 // the upper bound of the multiplicity should be considered.
51139 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
51140 check(numberOfExistingReferences < 1);
51141 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
51142 // the upper bound of the opposite reference multiplicity should be considered.
51143 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
51144 check(numberOfExistingOppositeReferences < 1);
51145 // The reference is containment, then a new reference cannot be create if:
51146 // 1. Multiple parents
51147 neg find mustContains4(problem,interpretation,_,target);
51148 // 2. Circle in the containment hierarchy
51149 neg find mustTransitiveContains(source,target);
51150} or {
51151 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
51152}
51153/**
51154 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
51155 */
51156private pattern mustInRelationinterface_reference_FunctionalData(
51157 problem:LogicProblem, interpretation:PartialInterpretation,
51158 source: DefinedElement, target:DefinedElement)
51159{
51160 find interpretation(problem,interpretation);
51161 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51162 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
51163 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
51164 BinaryElementRelationLink.param1(link,source);
51165 BinaryElementRelationLink.param2(link,target);
51166}
51167/**
51168 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
51169 */
51170private pattern mayInRelationinterface_reference_FunctionalData(
51171 problem:LogicProblem, interpretation:PartialInterpretation,
51172 source: DefinedElement, target:DefinedElement)
51173{
51174 find interpretation(problem,interpretation);
51175 // The two endpoint of the link have to exist
51176 find mayExist(problem, interpretation, source);
51177 find mayExist(problem, interpretation, target);
51178 // Type consistency
51179 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
51180 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
51181 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
51182 // the upper bound of the multiplicity should be considered.
51183 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
51184 check(numberOfExistingReferences < 1);
51185 // The eOpposite of the reference is containment, then a referene cannot be created if
51186 // 1. Multiple parents
51187 neg find mustContains4(problem,interpretation,source,_);
51188 // 2. Circle in the containment hierarchy
51189 neg find mustTransitiveContains(source,target);
51190} or {
51191 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
51192}
51193/**
51194 * Matcher for detecting tuples t where []type attribute Function(source,target)
51195 */
51196private pattern mustInRelationtype_attribute_Function(
51197 problem:LogicProblem, interpretation:PartialInterpretation,
51198 source: DefinedElement, target:DefinedElement)
51199{
51200 find interpretation(problem,interpretation);
51201 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51202 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
51203 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
51204 BinaryElementRelationLink.param1(link,source);
51205 BinaryElementRelationLink.param2(link,target);
51206}
51207/**
51208 * Matcher for detecting tuples t where <>type attribute Function(source,target)
51209 */
51210private pattern mayInRelationtype_attribute_Function(
51211 problem:LogicProblem, interpretation:PartialInterpretation,
51212 source: DefinedElement, target:DefinedElement)
51213{
51214 find interpretation(problem,interpretation);
51215 // The two endpoint of the link have to exist
51216 find mayExist(problem, interpretation, source);
51217 find mayExist(problem, interpretation, target);
51218 // Type consistency
51219 find mayInstanceOfFunction_class(problem,interpretation,source);
51220 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
51221 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
51222 // the upper bound of the multiplicity should be considered.
51223 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
51224 check(numberOfExistingReferences < 1);
51225} or {
51226 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
51227}
51228
51229//////////
51230// 1.3 Relation Definition Indexers
51231//////////
51232
51233//////////
51234// 1.4 Containment Indexer
51235//////////
51236private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
51237 find mustContains4(_,_,source,target);
51238}
51239
51240private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
51241 source: DefinedElement, target: DefinedElement)
51242 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
51243
51244 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
51245
51246 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
51247
51248 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
51249
51250 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
51251
51252 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
51253
51254private pattern mustTransitiveContains(source,target) {
51255 find mustContains2+(source,target);
51256}
51257
51258//////////
51259// 2. Invalidation Indexers
51260//////////
51261// 2.1 Invalidated by WF Queries
51262//////////
51263
51264//////////
51265// 3. Unfinishedness Indexers
51266//////////
51267// 3.1 Unfinishedness Measured by Multiplicity
51268//////////
51269pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
51270 find interpretation(problem,interpretation);
51271 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51272 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
51273 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
51274 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
51275 check(numberOfExistingReferences < 1);
51276 missingMultiplicity == eval(1-numberOfExistingReferences);
51277}
51278pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
51279 find interpretation(problem,interpretation);
51280 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51281 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
51282 find mustInstanceOfInformationLink_class(problem,interpretation,object);
51283 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
51284 check(numberOfExistingReferences < 1);
51285 missingMultiplicity == eval(1-numberOfExistingReferences);
51286}
51287pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
51288 find interpretation(problem,interpretation);
51289 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51290 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
51291 find mustInstanceOfFunction_class(problem,interpretation,object);
51292 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
51293 check(numberOfExistingReferences < 1);
51294 missingMultiplicity == eval(1-numberOfExistingReferences);
51295}
51296
51297//////////
51298// 3.2 Unfinishedness Measured by WF Queries
51299//////////
51300
51301//////////
51302// 4. Refinement Indexers
51303//////////
51304// 4.1 Object constructors
51305//////////
51306private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
51307{
51308 find interpretation(problem,interpretation);
51309 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
51310 find mustExist(problem, interpretation, root);
51311}or{
51312 find interpretation(problem,interpretation);
51313 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
51314 find mustExist(problem, interpretation, root);
51315}or{
51316 find interpretation(problem,interpretation);
51317 find mustInstanceOfInformationLink_class(problem,interpretation,root);
51318 find mustExist(problem, interpretation, root);
51319}or{
51320 find interpretation(problem,interpretation);
51321 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
51322 find mustExist(problem, interpretation, root);
51323}or{
51324 find interpretation(problem,interpretation);
51325 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
51326 find mustExist(problem, interpretation, root);
51327}or{
51328 find interpretation(problem,interpretation);
51329 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
51330 find mustExist(problem, interpretation, root);
51331}or{
51332 find interpretation(problem,interpretation);
51333 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
51334 find mustExist(problem, interpretation, root);
51335}or{
51336 find interpretation(problem,interpretation);
51337 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
51338 find mustExist(problem, interpretation, root);
51339}or{
51340 find interpretation(problem,interpretation);
51341 find mustInstanceOfFunction_class(problem,interpretation,root);
51342 find mustExist(problem, interpretation, root);
51343}
51344pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
51345 problem:LogicProblem, interpretation:PartialInterpretation,
51346 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
51347 container:DefinedElement)
51348{
51349 find interpretation(problem,interpretation);
51350 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51351 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
51352 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
51353 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
51354 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
51355 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
51356 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
51357 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
51358 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
51359 find mustExist(problem, interpretation, container);
51360 neg find mustExist(problem, interpretation, newObject);
51361}
51362pattern createObject_InformationLink_class(
51363 problem:LogicProblem, interpretation:PartialInterpretation,
51364 typeInterpretation:PartialComplexTypeInterpretation)
51365{
51366 find interpretation(problem,interpretation);
51367 neg find hasElementInContainment(problem,interpretation);
51368 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51369 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
51370 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
51371 find mayExist(problem, interpretation, newObject);
51372 neg find mustExist(problem, interpretation, newObject);
51373}
51374pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
51375 problem:LogicProblem, interpretation:PartialInterpretation,
51376 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
51377 container:DefinedElement)
51378{
51379 find interpretation(problem,interpretation);
51380 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51381 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
51382 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
51383 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
51384 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
51385 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
51386 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
51387 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
51388 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
51389 find mustExist(problem, interpretation, container);
51390 neg find mustExist(problem, interpretation, newObject);
51391}
51392pattern createObject_FunctionalInput_class(
51393 problem:LogicProblem, interpretation:PartialInterpretation,
51394 typeInterpretation:PartialComplexTypeInterpretation)
51395{
51396 find interpretation(problem,interpretation);
51397 neg find hasElementInContainment(problem,interpretation);
51398 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51399 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
51400 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
51401 find mayExist(problem, interpretation, newObject);
51402 neg find mustExist(problem, interpretation, newObject);
51403}
51404pattern createObject_FunctionalArchitectureModel_class(
51405 problem:LogicProblem, interpretation:PartialInterpretation,
51406 typeInterpretation:PartialComplexTypeInterpretation)
51407{
51408 find interpretation(problem,interpretation);
51409 neg find hasElementInContainment(problem,interpretation);
51410 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51411 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class");
51412 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject);
51413 find mayExist(problem, interpretation, newObject);
51414 neg find mustExist(problem, interpretation, newObject);
51415}
51416pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
51417 problem:LogicProblem, interpretation:PartialInterpretation,
51418 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
51419 container:DefinedElement)
51420{
51421 find interpretation(problem,interpretation);
51422 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51423 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
51424 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
51425 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
51426 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
51427 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
51428 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
51429 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
51430 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
51431 find mustExist(problem, interpretation, container);
51432 neg find mustExist(problem, interpretation, newObject);
51433}
51434pattern createObject_FunctionalInterface_class(
51435 problem:LogicProblem, interpretation:PartialInterpretation,
51436 typeInterpretation:PartialComplexTypeInterpretation)
51437{
51438 find interpretation(problem,interpretation);
51439 neg find hasElementInContainment(problem,interpretation);
51440 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51441 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
51442 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
51443 find mayExist(problem, interpretation, newObject);
51444 neg find mustExist(problem, interpretation, newObject);
51445}
51446pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
51447 problem:LogicProblem, interpretation:PartialInterpretation,
51448 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
51449 container:DefinedElement)
51450{
51451 find interpretation(problem,interpretation);
51452 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51453 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
51454 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
51455 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
51456 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
51457 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
51458 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
51459 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
51460 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
51461 find mustExist(problem, interpretation, container);
51462 neg find mustExist(problem, interpretation, newObject);
51463}
51464pattern createObject_FAMTerminator_class(
51465 problem:LogicProblem, interpretation:PartialInterpretation,
51466 typeInterpretation:PartialComplexTypeInterpretation)
51467{
51468 find interpretation(problem,interpretation);
51469 neg find hasElementInContainment(problem,interpretation);
51470 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51471 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
51472 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
51473 find mayExist(problem, interpretation, newObject);
51474 neg find mustExist(problem, interpretation, newObject);
51475}
51476pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
51477 problem:LogicProblem, interpretation:PartialInterpretation,
51478 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
51479 container:DefinedElement)
51480{
51481 find interpretation(problem,interpretation);
51482 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51483 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
51484 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
51485 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
51486 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
51487 find mayInstanceOfFunction_class(problem,interpretation,newObject);
51488 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
51489 find mustExist(problem, interpretation, container);
51490 neg find mustExist(problem, interpretation, newObject);
51491}
51492pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
51493 problem:LogicProblem, interpretation:PartialInterpretation,
51494 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
51495 container:DefinedElement)
51496{
51497 find interpretation(problem,interpretation);
51498 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51499 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
51500 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
51501 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
51502 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
51503 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
51504 find mustInstanceOfFunction_class(problem,interpretation,container);
51505 find mayInstanceOfFunction_class(problem,interpretation,newObject);
51506 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
51507 find mustExist(problem, interpretation, container);
51508 neg find mustExist(problem, interpretation, newObject);
51509}
51510pattern createObject_Function_class(
51511 problem:LogicProblem, interpretation:PartialInterpretation,
51512 typeInterpretation:PartialComplexTypeInterpretation)
51513{
51514 find interpretation(problem,interpretation);
51515 neg find hasElementInContainment(problem,interpretation);
51516 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51517 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
51518 find mayInstanceOfFunction_class(problem,interpretation,newObject);
51519 find mayExist(problem, interpretation, newObject);
51520 neg find mustExist(problem, interpretation, newObject);
51521}
51522pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
51523 problem:LogicProblem, interpretation:PartialInterpretation,
51524 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
51525 container:DefinedElement)
51526{
51527 find interpretation(problem,interpretation);
51528 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51529 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
51530 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
51531 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
51532 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
51533 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
51534 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
51535 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
51536 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
51537 find mustExist(problem, interpretation, container);
51538 neg find mustExist(problem, interpretation, newObject);
51539}
51540pattern createObject_FunctionalOutput_class(
51541 problem:LogicProblem, interpretation:PartialInterpretation,
51542 typeInterpretation:PartialComplexTypeInterpretation)
51543{
51544 find interpretation(problem,interpretation);
51545 neg find hasElementInContainment(problem,interpretation);
51546 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51547 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
51548 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
51549 find mayExist(problem, interpretation, newObject);
51550 neg find mustExist(problem, interpretation, newObject);
51551}
51552
51553//////////
51554// 4.2 Type refinement
51555//////////
51556pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
51557 find interpretation(problem,interpretation);
51558 PartialInterpretation.newElements(interpretation,element);
51559 find mayInstanceOfInformationLink_class(problem,interpretation,element);
51560 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51561 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51562 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51563 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51564 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51565 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51566}
51567pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
51568 find interpretation(problem,interpretation);
51569 PartialInterpretation.newElements(interpretation,element);
51570 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
51571 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51572 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51573 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
51574 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51575 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51576 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51577 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
51578}
51579pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
51580 find interpretation(problem,interpretation);
51581 PartialInterpretation.newElements(interpretation,element);
51582 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51583 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51584 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51585 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51586 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51587 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51588 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51589}
51590pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
51591 find interpretation(problem,interpretation);
51592 PartialInterpretation.newElements(interpretation,element);
51593 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
51594 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51595 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51596 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51597 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51598 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51599 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51600}
51601pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
51602 find interpretation(problem,interpretation);
51603 PartialInterpretation.newElements(interpretation,element);
51604 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
51605 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51606 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51607 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51608 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51609 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51610 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51611}
51612pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
51613 find interpretation(problem,interpretation);
51614 PartialInterpretation.newElements(interpretation,element);
51615 find mayInstanceOfFunction_class(problem,interpretation,element);
51616 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51617 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51618 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51619 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51620 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51621 neg find mustInstanceOfFunction_class(problem,interpretation,element);
51622}
51623pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
51624 find interpretation(problem,interpretation);
51625 PartialInterpretation.newElements(interpretation,element);
51626 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
51627 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51628 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51629 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
51630 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51631 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51632 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51633 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
51634}
51635
51636//////////
51637// 4.3 Relation refinement
51638//////////
51639pattern refineRelation_model_reference_FunctionalElement(
51640 problem:LogicProblem, interpretation:PartialInterpretation,
51641 relationIterpretation:PartialRelationInterpretation,
51642 from: DefinedElement, to: DefinedElement)
51643{
51644 find interpretation(problem,interpretation);
51645 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51646 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
51647 find mustExist(problem, interpretation, from);
51648 find mustExist(problem, interpretation, to);
51649 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
51650 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
51651 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
51652 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
51653}
51654pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
51655 problem:LogicProblem, interpretation:PartialInterpretation,
51656 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
51657 from: DefinedElement, to: DefinedElement)
51658{
51659 find interpretation(problem,interpretation);
51660 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51661 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
51662 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
51663 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
51664 find mustExist(problem, interpretation, from);
51665 find mustExist(problem, interpretation, to);
51666 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
51667 find mustInstanceOfInformationLink_class(problem,interpretation,to);
51668 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
51669 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
51670}
51671pattern refineRelation_type_attribute_Function(
51672 problem:LogicProblem, interpretation:PartialInterpretation,
51673 relationIterpretation:PartialRelationInterpretation,
51674 from: DefinedElement, to: DefinedElement)
51675{
51676 find interpretation(problem,interpretation);
51677 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51678 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
51679 find mustExist(problem, interpretation, from);
51680 find mustExist(problem, interpretation, to);
51681 find mustInstanceOfFunction_class(problem,interpretation,from);
51682 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
51683 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
51684 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
51685}
51686import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
51687import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
51688import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
51689
51690//////////
51691// 0. Util
51692//////////
51693private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
51694 PartialInterpretation.problem(interpretation,problem);
51695}
51696
51697/////////////////////////
51698// 0.1 Existence
51699/////////////////////////
51700private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51701 find interpretation(problem,interpretation);
51702 LogicProblem.elements(problem,element);
51703} or {
51704 find interpretation(problem,interpretation);
51705 PartialInterpretation.newElements(interpretation,element);
51706}
51707
51708private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51709 find mustExist(problem,interpretation,element);
51710} or {
51711 find interpretation(problem,interpretation);
51712 neg find elementCloseWorld(element);
51713 PartialInterpretation.openWorldElements(interpretation,element);
51714}
51715
51716private pattern elementCloseWorld(element:DefinedElement) {
51717 PartialInterpretation.openWorldElements(i,element);
51718 PartialInterpretation.maxNewElements(i,0);
51719} or {
51720 Scope.targetTypeInterpretation(scope,interpretation);
51721 PartialTypeInterpratation.elements(interpretation,element);
51722 Scope.maxNewElements(scope,0);
51723}
51724
51725////////////////////////
51726// 0.2 Equivalence
51727////////////////////////
51728pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
51729 find mayExist(problem,interpretation,a);
51730 find mayExist(problem,interpretation,b);
51731 a == b;
51732}
51733
51734////////////////////////
51735// 0.3 Required Patterns by TypeIndexer
51736////////////////////////
51737private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
51738 find interpretation(problem,interpretation);
51739 LogicProblem.types(problem,type);
51740 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51741 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51742}
51743
51744private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
51745 find interpretation(problem,interpretation);
51746 LogicProblem.types(problem,type);
51747 TypeDefinition.elements(type,element);
51748} or {
51749 find interpretation(problem,interpretation);
51750 find typeInterpretation(problem,interpretation,type,typeInterpretation);
51751 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
51752}
51753
51754private pattern isPrimitive(element: PrimitiveElement) {
51755 PrimitiveElement(element);
51756}
51757
51758//////////
51759// 1. Problem-Specific Base Indexers
51760//////////
51761// 1.1 Type Indexers
51762//////////
51763// 1.1.1 primitive Type Indexers
51764//////////
51765
51766//////////
51767// 1.1.2 domain-specific Type Indexers
51768//////////
51769/**
51770 * An element must be an instance of type "FunctionalElement class".
51771 */
51772private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51773 Type.name(type,"FunctionalElement class");
51774 find directInstanceOf(problem,interpretation,element,type);
51775}
51776private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51777 find interpretation(problem,interpretation);
51778 PartialInterpretation.scopes(interpretation,scope);
51779 Scope.targetTypeInterpretation(scope,typeInterpretation);
51780 Scope.maxNewElements(scope,0);
51781 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51782 Type.name(type,"FunctionalElement class");
51783}
51784
51785/**
51786 * An element may be an instance of type "FunctionalElement class".
51787 */
51788private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51789{
51790 find interpretation(problem,interpretation);
51791 PartialInterpretation.newElements(interpretation,element);
51792 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51793 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51794 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51795 neg find mustInstanceOfFunction_class(problem,interpretation,element);
51796 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51797 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51798 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
51799 neg find isPrimitive(element);
51800} or {
51801 find interpretation(problem,interpretation);
51802 PartialInterpretation.openWorldElements(interpretation,element);
51803 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51804 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51805 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51806 neg find mustInstanceOfFunction_class(problem,interpretation,element);
51807 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51808 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51809 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
51810 neg find isPrimitive(element);
51811} or
51812{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
51813/**
51814 * An element must be an instance of type "FunctionalArchitectureModel class".
51815 */
51816private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51817 Type.name(type,"FunctionalArchitectureModel class");
51818 find directInstanceOf(problem,interpretation,element,type);
51819}
51820private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51821 find interpretation(problem,interpretation);
51822 PartialInterpretation.scopes(interpretation,scope);
51823 Scope.targetTypeInterpretation(scope,typeInterpretation);
51824 Scope.maxNewElements(scope,0);
51825 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51826 Type.name(type,"FunctionalArchitectureModel class");
51827}
51828
51829/**
51830 * An element may be an instance of type "FunctionalArchitectureModel class".
51831 */
51832private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51833{
51834 find interpretation(problem,interpretation);
51835 PartialInterpretation.newElements(interpretation,element);
51836 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51837 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51838 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
51839 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51840 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51841 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51842 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
51843 neg find isPrimitive(element);
51844} or {
51845 find interpretation(problem,interpretation);
51846 PartialInterpretation.openWorldElements(interpretation,element);
51847 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51848 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51849 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
51850 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51851 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51852 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51853 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
51854 neg find isPrimitive(element);
51855} or
51856{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
51857/**
51858 * An element must be an instance of type "Function class".
51859 */
51860private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51861 Type.name(type,"Function class");
51862 find directInstanceOf(problem,interpretation,element,type);
51863}
51864private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51865 find interpretation(problem,interpretation);
51866 PartialInterpretation.scopes(interpretation,scope);
51867 Scope.targetTypeInterpretation(scope,typeInterpretation);
51868 Scope.maxNewElements(scope,0);
51869 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51870 Type.name(type,"Function class");
51871}
51872
51873/**
51874 * An element may be an instance of type "Function class".
51875 */
51876private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51877{
51878 find interpretation(problem,interpretation);
51879 PartialInterpretation.newElements(interpretation,element);
51880 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51881 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51882 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51883 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51884 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51885 neg find scopeDisallowsNewFunction_class(problem, interpretation);
51886 neg find isPrimitive(element);
51887} or {
51888 find interpretation(problem,interpretation);
51889 PartialInterpretation.openWorldElements(interpretation,element);
51890 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51891 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51892 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51893 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51894 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51895 neg find scopeDisallowsNewFunction_class(problem, interpretation);
51896 neg find isPrimitive(element);
51897} or
51898{ find mustInstanceOfFunction_class(problem,interpretation,element); }
51899/**
51900 * An element must be an instance of type "FAMTerminator class".
51901 */
51902private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51903 Type.name(type,"FAMTerminator class");
51904 find directInstanceOf(problem,interpretation,element,type);
51905}
51906private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51907 find interpretation(problem,interpretation);
51908 PartialInterpretation.scopes(interpretation,scope);
51909 Scope.targetTypeInterpretation(scope,typeInterpretation);
51910 Scope.maxNewElements(scope,0);
51911 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51912 Type.name(type,"FAMTerminator class");
51913}
51914
51915/**
51916 * An element may be an instance of type "FAMTerminator class".
51917 */
51918private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51919{
51920 find interpretation(problem,interpretation);
51921 PartialInterpretation.newElements(interpretation,element);
51922 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51923 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51924 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51925 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51926 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51927 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
51928 neg find isPrimitive(element);
51929} or {
51930 find interpretation(problem,interpretation);
51931 PartialInterpretation.openWorldElements(interpretation,element);
51932 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
51933 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51934 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51935 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51936 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51937 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
51938 neg find isPrimitive(element);
51939} or
51940{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
51941/**
51942 * An element must be an instance of type "InformationLink class".
51943 */
51944private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51945 Type.name(type,"InformationLink class");
51946 find directInstanceOf(problem,interpretation,element,type);
51947}
51948private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51949 find interpretation(problem,interpretation);
51950 PartialInterpretation.scopes(interpretation,scope);
51951 Scope.targetTypeInterpretation(scope,typeInterpretation);
51952 Scope.maxNewElements(scope,0);
51953 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51954 Type.name(type,"InformationLink class");
51955}
51956
51957/**
51958 * An element may be an instance of type "InformationLink class".
51959 */
51960private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51961{
51962 find interpretation(problem,interpretation);
51963 PartialInterpretation.newElements(interpretation,element);
51964 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51965 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51966 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51967 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51968 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51969 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
51970 neg find isPrimitive(element);
51971} or {
51972 find interpretation(problem,interpretation);
51973 PartialInterpretation.openWorldElements(interpretation,element);
51974 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
51975 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
51976 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
51977 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
51978 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
51979 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
51980 neg find isPrimitive(element);
51981} or
51982{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
51983/**
51984 * An element must be an instance of type "FunctionalInterface class".
51985 */
51986private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51987 Type.name(type,"FunctionalInterface class");
51988 find directInstanceOf(problem,interpretation,element,type);
51989}
51990private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51991 find interpretation(problem,interpretation);
51992 PartialInterpretation.scopes(interpretation,scope);
51993 Scope.targetTypeInterpretation(scope,typeInterpretation);
51994 Scope.maxNewElements(scope,0);
51995 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51996 Type.name(type,"FunctionalInterface class");
51997}
51998
51999/**
52000 * An element may be an instance of type "FunctionalInterface class".
52001 */
52002private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52003{
52004 find interpretation(problem,interpretation);
52005 PartialInterpretation.newElements(interpretation,element);
52006 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
52007 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
52008 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
52009 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
52010 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
52011 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
52012 neg find isPrimitive(element);
52013} or {
52014 find interpretation(problem,interpretation);
52015 PartialInterpretation.openWorldElements(interpretation,element);
52016 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
52017 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
52018 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
52019 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
52020 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
52021 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
52022 neg find isPrimitive(element);
52023} or
52024{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
52025/**
52026 * An element must be an instance of type "FunctionalInput class".
52027 */
52028private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52029 Type.name(type,"FunctionalInput class");
52030 find directInstanceOf(problem,interpretation,element,type);
52031}
52032private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52033 find interpretation(problem,interpretation);
52034 PartialInterpretation.scopes(interpretation,scope);
52035 Scope.targetTypeInterpretation(scope,typeInterpretation);
52036 Scope.maxNewElements(scope,0);
52037 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52038 Type.name(type,"FunctionalInput class");
52039}
52040
52041/**
52042 * An element may be an instance of type "FunctionalInput class".
52043 */
52044private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52045{
52046 find interpretation(problem,interpretation);
52047 PartialInterpretation.newElements(interpretation,element);
52048 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
52049 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
52050 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
52051 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
52052 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
52053 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
52054 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
52055 neg find isPrimitive(element);
52056} or {
52057 find interpretation(problem,interpretation);
52058 PartialInterpretation.openWorldElements(interpretation,element);
52059 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
52060 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
52061 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
52062 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
52063 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
52064 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
52065 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
52066 neg find isPrimitive(element);
52067} or
52068{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
52069/**
52070 * An element must be an instance of type "FunctionalOutput class".
52071 */
52072private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52073 Type.name(type,"FunctionalOutput class");
52074 find directInstanceOf(problem,interpretation,element,type);
52075}
52076private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52077 find interpretation(problem,interpretation);
52078 PartialInterpretation.scopes(interpretation,scope);
52079 Scope.targetTypeInterpretation(scope,typeInterpretation);
52080 Scope.maxNewElements(scope,0);
52081 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52082 Type.name(type,"FunctionalOutput class");
52083}
52084
52085/**
52086 * An element may be an instance of type "FunctionalOutput class".
52087 */
52088private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52089{
52090 find interpretation(problem,interpretation);
52091 PartialInterpretation.newElements(interpretation,element);
52092 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
52093 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
52094 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
52095 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
52096 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
52097 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
52098 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
52099 neg find isPrimitive(element);
52100} or {
52101 find interpretation(problem,interpretation);
52102 PartialInterpretation.openWorldElements(interpretation,element);
52103 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
52104 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
52105 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
52106 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
52107 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
52108 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
52109 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
52110 neg find isPrimitive(element);
52111} or
52112{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
52113/**
52114 * An element must be an instance of type "FunctionalData class".
52115 */
52116private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52117 Type.name(type,"FunctionalData class");
52118 find directInstanceOf(problem,interpretation,element,type);
52119}
52120private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52121 find interpretation(problem,interpretation);
52122 PartialInterpretation.scopes(interpretation,scope);
52123 Scope.targetTypeInterpretation(scope,typeInterpretation);
52124 Scope.maxNewElements(scope,0);
52125 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52126 Type.name(type,"FunctionalData class");
52127}
52128
52129/**
52130 * An element may be an instance of type "FunctionalData class".
52131 */
52132private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52133{
52134 find interpretation(problem,interpretation);
52135 PartialInterpretation.newElements(interpretation,element);
52136 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
52137 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
52138 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
52139 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
52140 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
52141 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
52142 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
52143 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
52144 neg find isPrimitive(element);
52145} or {
52146 find interpretation(problem,interpretation);
52147 PartialInterpretation.openWorldElements(interpretation,element);
52148 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
52149 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
52150 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
52151 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
52152 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
52153 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
52154 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
52155 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
52156 neg find isPrimitive(element);
52157} or
52158{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
52159/**
52160 * An element must be an instance of type "FunctionType enum".
52161 */
52162private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52163 Type.name(type,"FunctionType enum");
52164 find directInstanceOf(problem,interpretation,element,type);
52165}
52166private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
52167 find interpretation(problem,interpretation);
52168 PartialInterpretation.scopes(interpretation,scope);
52169 Scope.targetTypeInterpretation(scope,typeInterpretation);
52170 Scope.maxNewElements(scope,0);
52171 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52172 Type.name(type,"FunctionType enum");
52173}
52174
52175/**
52176 * An element may be an instance of type "FunctionType enum".
52177 */
52178private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52179{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
52180/**
52181 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
52182 */
52183private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52184 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
52185 find directInstanceOf(problem,interpretation,element,type);
52186}
52187private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52188 find interpretation(problem,interpretation);
52189 PartialInterpretation.scopes(interpretation,scope);
52190 Scope.targetTypeInterpretation(scope,typeInterpretation);
52191 Scope.maxNewElements(scope,0);
52192 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52193 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
52194}
52195
52196/**
52197 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
52198 */
52199private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52200{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
52201/**
52202 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
52203 */
52204private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52205 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
52206 find directInstanceOf(problem,interpretation,element,type);
52207}
52208private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52209 find interpretation(problem,interpretation);
52210 PartialInterpretation.scopes(interpretation,scope);
52211 Scope.targetTypeInterpretation(scope,typeInterpretation);
52212 Scope.maxNewElements(scope,0);
52213 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52214 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
52215}
52216
52217/**
52218 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
52219 */
52220private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52221{
52222 find interpretation(problem,interpretation);
52223 PartialInterpretation.newElements(interpretation,element);
52224 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
52225 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
52226 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
52227 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
52228 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
52229 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
52230 neg find isPrimitive(element);
52231} or {
52232 find interpretation(problem,interpretation);
52233 PartialInterpretation.openWorldElements(interpretation,element);
52234 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
52235 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
52236 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
52237 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
52238 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
52239 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
52240 neg find isPrimitive(element);
52241} or
52242{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
52243
52244//////////
52245// 1.2 Relation Declaration Indexers
52246//////////
52247/**
52248 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
52249 */
52250private pattern mustInRelationinterface_reference_FunctionalElement(
52251 problem:LogicProblem, interpretation:PartialInterpretation,
52252 source: DefinedElement, target:DefinedElement)
52253{
52254 find interpretation(problem,interpretation);
52255 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52256 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
52257 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52258 BinaryElementRelationLink.param1(link,source);
52259 BinaryElementRelationLink.param2(link,target);
52260}
52261/**
52262 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
52263 */
52264private pattern mayInRelationinterface_reference_FunctionalElement(
52265 problem:LogicProblem, interpretation:PartialInterpretation,
52266 source: DefinedElement, target:DefinedElement)
52267{
52268 find interpretation(problem,interpretation);
52269 // The two endpoint of the link have to exist
52270 find mayExist(problem, interpretation, source);
52271 find mayExist(problem, interpretation, target);
52272 // Type consistency
52273 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
52274 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
52275 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52276 // the upper bound of the multiplicity should be considered.
52277 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
52278 check(numberOfExistingReferences < 1);
52279 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
52280 // the upper bound of the opposite reference multiplicity should be considered.
52281 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
52282 check(numberOfExistingOppositeReferences < 1);
52283 // The reference is containment, then a new reference cannot be create if:
52284 // 1. Multiple parents
52285 neg find mustContains4(problem,interpretation,_,target);
52286 // 2. Circle in the containment hierarchy
52287 neg find mustTransitiveContains(source,target);
52288} or {
52289 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
52290}
52291/**
52292 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
52293 */
52294private pattern mustInRelationmodel_reference_FunctionalElement(
52295 problem:LogicProblem, interpretation:PartialInterpretation,
52296 source: DefinedElement, target:DefinedElement)
52297{
52298 find interpretation(problem,interpretation);
52299 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52300 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
52301 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52302 BinaryElementRelationLink.param1(link,source);
52303 BinaryElementRelationLink.param2(link,target);
52304}
52305/**
52306 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
52307 */
52308private pattern mayInRelationmodel_reference_FunctionalElement(
52309 problem:LogicProblem, interpretation:PartialInterpretation,
52310 source: DefinedElement, target:DefinedElement)
52311{
52312 find interpretation(problem,interpretation);
52313 // The two endpoint of the link have to exist
52314 find mayExist(problem, interpretation, source);
52315 find mayExist(problem, interpretation, target);
52316 // Type consistency
52317 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
52318 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
52319 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52320 // the upper bound of the multiplicity should be considered.
52321 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
52322 check(numberOfExistingReferences < 1);
52323} or {
52324 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
52325}
52326/**
52327 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
52328 */
52329private pattern mustInRelationparent_reference_FunctionalElement(
52330 problem:LogicProblem, interpretation:PartialInterpretation,
52331 source: DefinedElement, target:DefinedElement)
52332{
52333 find interpretation(problem,interpretation);
52334 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52335 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
52336 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52337 BinaryElementRelationLink.param1(link,source);
52338 BinaryElementRelationLink.param2(link,target);
52339}
52340/**
52341 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
52342 */
52343private pattern mayInRelationparent_reference_FunctionalElement(
52344 problem:LogicProblem, interpretation:PartialInterpretation,
52345 source: DefinedElement, target:DefinedElement)
52346{
52347 find interpretation(problem,interpretation);
52348 // The two endpoint of the link have to exist
52349 find mayExist(problem, interpretation, source);
52350 find mayExist(problem, interpretation, target);
52351 // Type consistency
52352 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
52353 find mayInstanceOfFunction_class(problem,interpretation,target);
52354 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52355 // the upper bound of the multiplicity should be considered.
52356 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
52357 check(numberOfExistingReferences < 1);
52358 // The eOpposite of the reference is containment, then a referene cannot be created if
52359 // 1. Multiple parents
52360 neg find mustContains4(problem,interpretation,source,_);
52361 // 2. Circle in the containment hierarchy
52362 neg find mustTransitiveContains(source,target);
52363} or {
52364 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
52365}
52366/**
52367 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
52368 */
52369private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
52370 problem:LogicProblem, interpretation:PartialInterpretation,
52371 source: DefinedElement, target:DefinedElement)
52372{
52373 find interpretation(problem,interpretation);
52374 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52375 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
52376 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52377 BinaryElementRelationLink.param1(link,source);
52378 BinaryElementRelationLink.param2(link,target);
52379}
52380/**
52381 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
52382 */
52383private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
52384 problem:LogicProblem, interpretation:PartialInterpretation,
52385 source: DefinedElement, target:DefinedElement)
52386{
52387 find interpretation(problem,interpretation);
52388 // The two endpoint of the link have to exist
52389 find mayExist(problem, interpretation, source);
52390 find mayExist(problem, interpretation, target);
52391 // Type consistency
52392 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
52393 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
52394 // The reference is containment, then a new reference cannot be create if:
52395 // 1. Multiple parents
52396 neg find mustContains4(problem,interpretation,_,target);
52397 // 2. Circle in the containment hierarchy
52398 neg find mustTransitiveContains(source,target);
52399} or {
52400 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
52401}
52402/**
52403 * Matcher for detecting tuples t where []subElements reference Function(source,target)
52404 */
52405private pattern mustInRelationsubElements_reference_Function(
52406 problem:LogicProblem, interpretation:PartialInterpretation,
52407 source: DefinedElement, target:DefinedElement)
52408{
52409 find interpretation(problem,interpretation);
52410 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52411 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
52412 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52413 BinaryElementRelationLink.param1(link,source);
52414 BinaryElementRelationLink.param2(link,target);
52415}
52416/**
52417 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
52418 */
52419private pattern mayInRelationsubElements_reference_Function(
52420 problem:LogicProblem, interpretation:PartialInterpretation,
52421 source: DefinedElement, target:DefinedElement)
52422{
52423 find interpretation(problem,interpretation);
52424 // The two endpoint of the link have to exist
52425 find mayExist(problem, interpretation, source);
52426 find mayExist(problem, interpretation, target);
52427 // Type consistency
52428 find mayInstanceOfFunction_class(problem,interpretation,source);
52429 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
52430 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
52431 // the upper bound of the opposite reference multiplicity should be considered.
52432 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
52433 check(numberOfExistingOppositeReferences < 1);
52434 // The reference is containment, then a new reference cannot be create if:
52435 // 1. Multiple parents
52436 neg find mustContains4(problem,interpretation,_,target);
52437 // 2. Circle in the containment hierarchy
52438 neg find mustTransitiveContains(source,target);
52439} or {
52440 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
52441}
52442/**
52443 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
52444 */
52445private pattern mustInRelationdata_reference_FAMTerminator(
52446 problem:LogicProblem, interpretation:PartialInterpretation,
52447 source: DefinedElement, target:DefinedElement)
52448{
52449 find interpretation(problem,interpretation);
52450 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52451 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
52452 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52453 BinaryElementRelationLink.param1(link,source);
52454 BinaryElementRelationLink.param2(link,target);
52455}
52456/**
52457 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
52458 */
52459private pattern mayInRelationdata_reference_FAMTerminator(
52460 problem:LogicProblem, interpretation:PartialInterpretation,
52461 source: DefinedElement, target:DefinedElement)
52462{
52463 find interpretation(problem,interpretation);
52464 // The two endpoint of the link have to exist
52465 find mayExist(problem, interpretation, source);
52466 find mayExist(problem, interpretation, target);
52467 // Type consistency
52468 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
52469 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
52470 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52471 // the upper bound of the multiplicity should be considered.
52472 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
52473 check(numberOfExistingReferences < 1);
52474 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
52475 // the upper bound of the opposite reference multiplicity should be considered.
52476 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
52477 check(numberOfExistingOppositeReferences < 1);
52478 // The eOpposite of the reference is containment, then a referene cannot be created if
52479 // 1. Multiple parents
52480 neg find mustContains4(problem,interpretation,source,_);
52481 // 2. Circle in the containment hierarchy
52482 neg find mustTransitiveContains(source,target);
52483} or {
52484 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
52485}
52486/**
52487 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
52488 */
52489private pattern mustInRelationfrom_reference_InformationLink(
52490 problem:LogicProblem, interpretation:PartialInterpretation,
52491 source: DefinedElement, target:DefinedElement)
52492{
52493 find interpretation(problem,interpretation);
52494 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52495 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
52496 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52497 BinaryElementRelationLink.param1(link,source);
52498 BinaryElementRelationLink.param2(link,target);
52499}
52500/**
52501 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
52502 */
52503private pattern mayInRelationfrom_reference_InformationLink(
52504 problem:LogicProblem, interpretation:PartialInterpretation,
52505 source: DefinedElement, target:DefinedElement)
52506{
52507 find interpretation(problem,interpretation);
52508 // The two endpoint of the link have to exist
52509 find mayExist(problem, interpretation, source);
52510 find mayExist(problem, interpretation, target);
52511 // Type consistency
52512 find mayInstanceOfInformationLink_class(problem,interpretation,source);
52513 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
52514 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52515 // the upper bound of the multiplicity should be considered.
52516 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
52517 check(numberOfExistingReferences < 1);
52518 // The eOpposite of the reference is containment, then a referene cannot be created if
52519 // 1. Multiple parents
52520 neg find mustContains4(problem,interpretation,source,_);
52521 // 2. Circle in the containment hierarchy
52522 neg find mustTransitiveContains(source,target);
52523} or {
52524 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
52525}
52526/**
52527 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
52528 */
52529private pattern mustInRelationto_reference_InformationLink(
52530 problem:LogicProblem, interpretation:PartialInterpretation,
52531 source: DefinedElement, target:DefinedElement)
52532{
52533 find interpretation(problem,interpretation);
52534 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52535 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
52536 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52537 BinaryElementRelationLink.param1(link,source);
52538 BinaryElementRelationLink.param2(link,target);
52539}
52540/**
52541 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
52542 */
52543private pattern mayInRelationto_reference_InformationLink(
52544 problem:LogicProblem, interpretation:PartialInterpretation,
52545 source: DefinedElement, target:DefinedElement)
52546{
52547 find interpretation(problem,interpretation);
52548 // The two endpoint of the link have to exist
52549 find mayExist(problem, interpretation, source);
52550 find mayExist(problem, interpretation, target);
52551 // Type consistency
52552 find mayInstanceOfInformationLink_class(problem,interpretation,source);
52553 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
52554 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52555 // the upper bound of the multiplicity should be considered.
52556 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
52557 check(numberOfExistingReferences < 1);
52558} or {
52559 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
52560}
52561/**
52562 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
52563 */
52564private pattern mustInRelationdata_reference_FunctionalInterface(
52565 problem:LogicProblem, interpretation:PartialInterpretation,
52566 source: DefinedElement, target:DefinedElement)
52567{
52568 find interpretation(problem,interpretation);
52569 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52570 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
52571 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52572 BinaryElementRelationLink.param1(link,source);
52573 BinaryElementRelationLink.param2(link,target);
52574}
52575/**
52576 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
52577 */
52578private pattern mayInRelationdata_reference_FunctionalInterface(
52579 problem:LogicProblem, interpretation:PartialInterpretation,
52580 source: DefinedElement, target:DefinedElement)
52581{
52582 find interpretation(problem,interpretation);
52583 // The two endpoint of the link have to exist
52584 find mayExist(problem, interpretation, source);
52585 find mayExist(problem, interpretation, target);
52586 // Type consistency
52587 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
52588 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
52589 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
52590 // the upper bound of the opposite reference multiplicity should be considered.
52591 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
52592 check(numberOfExistingOppositeReferences < 1);
52593 // The reference is containment, then a new reference cannot be create if:
52594 // 1. Multiple parents
52595 neg find mustContains4(problem,interpretation,_,target);
52596 // 2. Circle in the containment hierarchy
52597 neg find mustTransitiveContains(source,target);
52598} or {
52599 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
52600}
52601/**
52602 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
52603 */
52604private pattern mustInRelationelement_reference_FunctionalInterface(
52605 problem:LogicProblem, interpretation:PartialInterpretation,
52606 source: DefinedElement, target:DefinedElement)
52607{
52608 find interpretation(problem,interpretation);
52609 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52610 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
52611 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52612 BinaryElementRelationLink.param1(link,source);
52613 BinaryElementRelationLink.param2(link,target);
52614}
52615/**
52616 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
52617 */
52618private pattern mayInRelationelement_reference_FunctionalInterface(
52619 problem:LogicProblem, interpretation:PartialInterpretation,
52620 source: DefinedElement, target:DefinedElement)
52621{
52622 find interpretation(problem,interpretation);
52623 // The two endpoint of the link have to exist
52624 find mayExist(problem, interpretation, source);
52625 find mayExist(problem, interpretation, target);
52626 // Type consistency
52627 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
52628 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
52629 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52630 // the upper bound of the multiplicity should be considered.
52631 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
52632 check(numberOfExistingReferences < 1);
52633 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
52634 // the upper bound of the opposite reference multiplicity should be considered.
52635 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
52636 check(numberOfExistingOppositeReferences < 1);
52637 // The eOpposite of the reference is containment, then a referene cannot be created if
52638 // 1. Multiple parents
52639 neg find mustContains4(problem,interpretation,source,_);
52640 // 2. Circle in the containment hierarchy
52641 neg find mustTransitiveContains(source,target);
52642} or {
52643 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
52644}
52645/**
52646 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
52647 */
52648private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
52649 problem:LogicProblem, interpretation:PartialInterpretation,
52650 source: DefinedElement, target:DefinedElement)
52651{
52652 find interpretation(problem,interpretation);
52653 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52654 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
52655 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52656 BinaryElementRelationLink.param1(link,source);
52657 BinaryElementRelationLink.param2(link,target);
52658}
52659/**
52660 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
52661 */
52662private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
52663 problem:LogicProblem, interpretation:PartialInterpretation,
52664 source: DefinedElement, target:DefinedElement)
52665{
52666 find interpretation(problem,interpretation);
52667 // The two endpoint of the link have to exist
52668 find mayExist(problem, interpretation, source);
52669 find mayExist(problem, interpretation, target);
52670 // Type consistency
52671 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
52672 find mayInstanceOfInformationLink_class(problem,interpretation,target);
52673 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
52674 // the upper bound of the opposite reference multiplicity should be considered.
52675 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
52676 check(numberOfExistingOppositeReferences < 1);
52677} or {
52678 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
52679}
52680/**
52681 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
52682 */
52683private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
52684 problem:LogicProblem, interpretation:PartialInterpretation,
52685 source: DefinedElement, target:DefinedElement)
52686{
52687 find interpretation(problem,interpretation);
52688 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52689 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
52690 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52691 BinaryElementRelationLink.param1(link,source);
52692 BinaryElementRelationLink.param2(link,target);
52693}
52694/**
52695 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
52696 */
52697private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
52698 problem:LogicProblem, interpretation:PartialInterpretation,
52699 source: DefinedElement, target:DefinedElement)
52700{
52701 find interpretation(problem,interpretation);
52702 // The two endpoint of the link have to exist
52703 find mayExist(problem, interpretation, source);
52704 find mayExist(problem, interpretation, target);
52705 // Type consistency
52706 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
52707 find mayInstanceOfInformationLink_class(problem,interpretation,target);
52708 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
52709 // the upper bound of the opposite reference multiplicity should be considered.
52710 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
52711 check(numberOfExistingOppositeReferences < 1);
52712 // The reference is containment, then a new reference cannot be create if:
52713 // 1. Multiple parents
52714 neg find mustContains4(problem,interpretation,_,target);
52715 // 2. Circle in the containment hierarchy
52716 neg find mustTransitiveContains(source,target);
52717} or {
52718 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
52719}
52720/**
52721 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
52722 */
52723private pattern mustInRelationterminator_reference_FunctionalData(
52724 problem:LogicProblem, interpretation:PartialInterpretation,
52725 source: DefinedElement, target:DefinedElement)
52726{
52727 find interpretation(problem,interpretation);
52728 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52729 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
52730 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52731 BinaryElementRelationLink.param1(link,source);
52732 BinaryElementRelationLink.param2(link,target);
52733}
52734/**
52735 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
52736 */
52737private pattern mayInRelationterminator_reference_FunctionalData(
52738 problem:LogicProblem, interpretation:PartialInterpretation,
52739 source: DefinedElement, target:DefinedElement)
52740{
52741 find interpretation(problem,interpretation);
52742 // The two endpoint of the link have to exist
52743 find mayExist(problem, interpretation, source);
52744 find mayExist(problem, interpretation, target);
52745 // Type consistency
52746 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
52747 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
52748 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52749 // the upper bound of the multiplicity should be considered.
52750 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
52751 check(numberOfExistingReferences < 1);
52752 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
52753 // the upper bound of the opposite reference multiplicity should be considered.
52754 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
52755 check(numberOfExistingOppositeReferences < 1);
52756 // The reference is containment, then a new reference cannot be create if:
52757 // 1. Multiple parents
52758 neg find mustContains4(problem,interpretation,_,target);
52759 // 2. Circle in the containment hierarchy
52760 neg find mustTransitiveContains(source,target);
52761} or {
52762 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
52763}
52764/**
52765 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
52766 */
52767private pattern mustInRelationinterface_reference_FunctionalData(
52768 problem:LogicProblem, interpretation:PartialInterpretation,
52769 source: DefinedElement, target:DefinedElement)
52770{
52771 find interpretation(problem,interpretation);
52772 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52773 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
52774 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52775 BinaryElementRelationLink.param1(link,source);
52776 BinaryElementRelationLink.param2(link,target);
52777}
52778/**
52779 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
52780 */
52781private pattern mayInRelationinterface_reference_FunctionalData(
52782 problem:LogicProblem, interpretation:PartialInterpretation,
52783 source: DefinedElement, target:DefinedElement)
52784{
52785 find interpretation(problem,interpretation);
52786 // The two endpoint of the link have to exist
52787 find mayExist(problem, interpretation, source);
52788 find mayExist(problem, interpretation, target);
52789 // Type consistency
52790 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
52791 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
52792 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52793 // the upper bound of the multiplicity should be considered.
52794 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
52795 check(numberOfExistingReferences < 1);
52796 // The eOpposite of the reference is containment, then a referene cannot be created if
52797 // 1. Multiple parents
52798 neg find mustContains4(problem,interpretation,source,_);
52799 // 2. Circle in the containment hierarchy
52800 neg find mustTransitiveContains(source,target);
52801} or {
52802 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
52803}
52804/**
52805 * Matcher for detecting tuples t where []type attribute Function(source,target)
52806 */
52807private pattern mustInRelationtype_attribute_Function(
52808 problem:LogicProblem, interpretation:PartialInterpretation,
52809 source: DefinedElement, target:DefinedElement)
52810{
52811 find interpretation(problem,interpretation);
52812 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52813 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
52814 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52815 BinaryElementRelationLink.param1(link,source);
52816 BinaryElementRelationLink.param2(link,target);
52817}
52818/**
52819 * Matcher for detecting tuples t where <>type attribute Function(source,target)
52820 */
52821private pattern mayInRelationtype_attribute_Function(
52822 problem:LogicProblem, interpretation:PartialInterpretation,
52823 source: DefinedElement, target:DefinedElement)
52824{
52825 find interpretation(problem,interpretation);
52826 // The two endpoint of the link have to exist
52827 find mayExist(problem, interpretation, source);
52828 find mayExist(problem, interpretation, target);
52829 // Type consistency
52830 find mayInstanceOfFunction_class(problem,interpretation,source);
52831 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
52832 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52833 // the upper bound of the multiplicity should be considered.
52834 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
52835 check(numberOfExistingReferences < 1);
52836} or {
52837 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
52838}
52839
52840//////////
52841// 1.3 Relation Definition Indexers
52842//////////
52843
52844//////////
52845// 1.4 Containment Indexer
52846//////////
52847private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
52848 find mustContains4(_,_,source,target);
52849}
52850
52851private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
52852 source: DefinedElement, target: DefinedElement)
52853 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
52854
52855 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
52856
52857 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
52858
52859 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
52860
52861 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
52862
52863 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
52864
52865private pattern mustTransitiveContains(source,target) {
52866 find mustContains2+(source,target);
52867}
52868
52869//////////
52870// 2. Invalidation Indexers
52871//////////
52872// 2.1 Invalidated by WF Queries
52873//////////
52874
52875//////////
52876// 3. Unfinishedness Indexers
52877//////////
52878// 3.1 Unfinishedness Measured by Multiplicity
52879//////////
52880pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
52881 find interpretation(problem,interpretation);
52882 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52883 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
52884 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
52885 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
52886 check(numberOfExistingReferences < 1);
52887 missingMultiplicity == eval(1-numberOfExistingReferences);
52888}
52889pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
52890 find interpretation(problem,interpretation);
52891 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52892 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
52893 find mustInstanceOfInformationLink_class(problem,interpretation,object);
52894 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
52895 check(numberOfExistingReferences < 1);
52896 missingMultiplicity == eval(1-numberOfExistingReferences);
52897}
52898pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
52899 find interpretation(problem,interpretation);
52900 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52901 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
52902 find mustInstanceOfFunction_class(problem,interpretation,object);
52903 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
52904 check(numberOfExistingReferences < 1);
52905 missingMultiplicity == eval(1-numberOfExistingReferences);
52906}
52907
52908//////////
52909// 3.2 Unfinishedness Measured by WF Queries
52910//////////
52911
52912//////////
52913// 4. Refinement Indexers
52914//////////
52915// 4.1 Object constructors
52916//////////
52917private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
52918{
52919 find interpretation(problem,interpretation);
52920 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
52921 find mustExist(problem, interpretation, root);
52922}or{
52923 find interpretation(problem,interpretation);
52924 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
52925 find mustExist(problem, interpretation, root);
52926}or{
52927 find interpretation(problem,interpretation);
52928 find mustInstanceOfInformationLink_class(problem,interpretation,root);
52929 find mustExist(problem, interpretation, root);
52930}or{
52931 find interpretation(problem,interpretation);
52932 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
52933 find mustExist(problem, interpretation, root);
52934}or{
52935 find interpretation(problem,interpretation);
52936 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
52937 find mustExist(problem, interpretation, root);
52938}or{
52939 find interpretation(problem,interpretation);
52940 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
52941 find mustExist(problem, interpretation, root);
52942}or{
52943 find interpretation(problem,interpretation);
52944 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
52945 find mustExist(problem, interpretation, root);
52946}or{
52947 find interpretation(problem,interpretation);
52948 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
52949 find mustExist(problem, interpretation, root);
52950}or{
52951 find interpretation(problem,interpretation);
52952 find mustInstanceOfFunction_class(problem,interpretation,root);
52953 find mustExist(problem, interpretation, root);
52954}or{
52955 find interpretation(problem,interpretation);
52956 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
52957 find mustExist(problem, interpretation, root);
52958}or{
52959 find interpretation(problem,interpretation);
52960 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
52961 find mustExist(problem, interpretation, root);
52962}
52963pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
52964 problem:LogicProblem, interpretation:PartialInterpretation,
52965 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
52966 container:DefinedElement)
52967{
52968 find interpretation(problem,interpretation);
52969 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
52970 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
52971 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
52972 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
52973 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
52974 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
52975 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
52976 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
52977 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
52978 find mustExist(problem, interpretation, container);
52979 neg find mustExist(problem, interpretation, newObject);
52980}
52981pattern createObject_FunctionalOutput_class(
52982 problem:LogicProblem, interpretation:PartialInterpretation,
52983 typeInterpretation:PartialComplexTypeInterpretation)
52984{
52985 find interpretation(problem,interpretation);
52986 neg find hasElementInContainment(problem,interpretation);
52987 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
52988 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
52989 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
52990 find mayExist(problem, interpretation, newObject);
52991 neg find mustExist(problem, interpretation, newObject);
52992}
52993pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
52994 problem:LogicProblem, interpretation:PartialInterpretation,
52995 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
52996 container:DefinedElement)
52997{
52998 find interpretation(problem,interpretation);
52999 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53000 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
53001 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
53002 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
53003 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
53004 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
53005 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
53006 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
53007 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
53008 find mustExist(problem, interpretation, container);
53009 neg find mustExist(problem, interpretation, newObject);
53010}
53011pattern createObject_FunctionalInterface_class(
53012 problem:LogicProblem, interpretation:PartialInterpretation,
53013 typeInterpretation:PartialComplexTypeInterpretation)
53014{
53015 find interpretation(problem,interpretation);
53016 neg find hasElementInContainment(problem,interpretation);
53017 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53018 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
53019 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
53020 find mayExist(problem, interpretation, newObject);
53021 neg find mustExist(problem, interpretation, newObject);
53022}
53023pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
53024 problem:LogicProblem, interpretation:PartialInterpretation,
53025 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
53026 container:DefinedElement)
53027{
53028 find interpretation(problem,interpretation);
53029 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53030 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
53031 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
53032 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
53033 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
53034 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
53035 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
53036 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
53037 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
53038 find mustExist(problem, interpretation, container);
53039 neg find mustExist(problem, interpretation, newObject);
53040}
53041pattern createObject_InformationLink_class(
53042 problem:LogicProblem, interpretation:PartialInterpretation,
53043 typeInterpretation:PartialComplexTypeInterpretation)
53044{
53045 find interpretation(problem,interpretation);
53046 neg find hasElementInContainment(problem,interpretation);
53047 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53048 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
53049 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
53050 find mayExist(problem, interpretation, newObject);
53051 neg find mustExist(problem, interpretation, newObject);
53052}
53053pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
53054 problem:LogicProblem, interpretation:PartialInterpretation,
53055 typeInterpretation:PartialComplexTypeInterpretation)
53056{
53057 find interpretation(problem,interpretation);
53058 neg find hasElementInContainment(problem,interpretation);
53059 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53060 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
53061 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
53062 find mayExist(problem, interpretation, newObject);
53063 neg find mustExist(problem, interpretation, newObject);
53064}
53065pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
53066 problem:LogicProblem, interpretation:PartialInterpretation,
53067 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
53068 container:DefinedElement)
53069{
53070 find interpretation(problem,interpretation);
53071 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53072 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
53073 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
53074 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
53075 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
53076 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
53077 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
53078 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
53079 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
53080 find mustExist(problem, interpretation, container);
53081 neg find mustExist(problem, interpretation, newObject);
53082}
53083pattern createObject_FunctionalInput_class(
53084 problem:LogicProblem, interpretation:PartialInterpretation,
53085 typeInterpretation:PartialComplexTypeInterpretation)
53086{
53087 find interpretation(problem,interpretation);
53088 neg find hasElementInContainment(problem,interpretation);
53089 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53090 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
53091 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
53092 find mayExist(problem, interpretation, newObject);
53093 neg find mustExist(problem, interpretation, newObject);
53094}
53095pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
53096 problem:LogicProblem, interpretation:PartialInterpretation,
53097 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
53098 container:DefinedElement)
53099{
53100 find interpretation(problem,interpretation);
53101 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53102 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
53103 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
53104 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
53105 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
53106 find mayInstanceOfFunction_class(problem,interpretation,newObject);
53107 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
53108 find mustExist(problem, interpretation, container);
53109 neg find mustExist(problem, interpretation, newObject);
53110}
53111pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
53112 problem:LogicProblem, interpretation:PartialInterpretation,
53113 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
53114 container:DefinedElement)
53115{
53116 find interpretation(problem,interpretation);
53117 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53118 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
53119 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
53120 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
53121 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
53122 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
53123 find mustInstanceOfFunction_class(problem,interpretation,container);
53124 find mayInstanceOfFunction_class(problem,interpretation,newObject);
53125 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
53126 find mustExist(problem, interpretation, container);
53127 neg find mustExist(problem, interpretation, newObject);
53128}
53129pattern createObject_Function_class(
53130 problem:LogicProblem, interpretation:PartialInterpretation,
53131 typeInterpretation:PartialComplexTypeInterpretation)
53132{
53133 find interpretation(problem,interpretation);
53134 neg find hasElementInContainment(problem,interpretation);
53135 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53136 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
53137 find mayInstanceOfFunction_class(problem,interpretation,newObject);
53138 find mayExist(problem, interpretation, newObject);
53139 neg find mustExist(problem, interpretation, newObject);
53140}
53141pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
53142 problem:LogicProblem, interpretation:PartialInterpretation,
53143 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
53144 container:DefinedElement)
53145{
53146 find interpretation(problem,interpretation);
53147 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53148 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
53149 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
53150 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
53151 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
53152 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
53153 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
53154 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
53155 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
53156 find mustExist(problem, interpretation, container);
53157 neg find mustExist(problem, interpretation, newObject);
53158}
53159pattern createObject_FAMTerminator_class(
53160 problem:LogicProblem, interpretation:PartialInterpretation,
53161 typeInterpretation:PartialComplexTypeInterpretation)
53162{
53163 find interpretation(problem,interpretation);
53164 neg find hasElementInContainment(problem,interpretation);
53165 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53166 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
53167 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
53168 find mayExist(problem, interpretation, newObject);
53169 neg find mustExist(problem, interpretation, newObject);
53170}
53171
53172//////////
53173// 4.2 Type refinement
53174//////////
53175pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
53176 find interpretation(problem,interpretation);
53177 PartialInterpretation.newElements(interpretation,element);
53178 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
53179 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
53180 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53181 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53182 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
53183 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53184 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53185 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53186}
53187pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
53188 find interpretation(problem,interpretation);
53189 PartialInterpretation.newElements(interpretation,element);
53190 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
53191 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53192 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53193 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53194 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53195 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53196 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53197}
53198pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
53199 find interpretation(problem,interpretation);
53200 PartialInterpretation.newElements(interpretation,element);
53201 find mayInstanceOfInformationLink_class(problem,interpretation,element);
53202 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53203 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53204 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53205 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53206 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53207 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53208}
53209pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
53210 find interpretation(problem,interpretation);
53211 PartialInterpretation.newElements(interpretation,element);
53212 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
53213 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53214 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
53215 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53216 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53217 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53218 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53219}
53220pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
53221 find interpretation(problem,interpretation);
53222 PartialInterpretation.newElements(interpretation,element);
53223 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
53224 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
53225 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53226 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53227 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
53228 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53229 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53230 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53231}
53232pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
53233 find interpretation(problem,interpretation);
53234 PartialInterpretation.newElements(interpretation,element);
53235 find mayInstanceOfFunction_class(problem,interpretation,element);
53236 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53237 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53238 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53239 neg find mustInstanceOfFunction_class(problem,interpretation,element);
53240 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53241 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53242}
53243pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
53244 find interpretation(problem,interpretation);
53245 PartialInterpretation.newElements(interpretation,element);
53246 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
53247 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53248 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53249 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53250 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53251 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53252 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53253}
53254
53255//////////
53256// 4.3 Relation refinement
53257//////////
53258pattern refineRelation_model_reference_FunctionalElement(
53259 problem:LogicProblem, interpretation:PartialInterpretation,
53260 relationIterpretation:PartialRelationInterpretation,
53261 from: DefinedElement, to: DefinedElement)
53262{
53263 find interpretation(problem,interpretation);
53264 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53265 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
53266 find mustExist(problem, interpretation, from);
53267 find mustExist(problem, interpretation, to);
53268 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
53269 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
53270 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
53271 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
53272}
53273pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
53274 problem:LogicProblem, interpretation:PartialInterpretation,
53275 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
53276 from: DefinedElement, to: DefinedElement)
53277{
53278 find interpretation(problem,interpretation);
53279 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53280 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
53281 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
53282 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
53283 find mustExist(problem, interpretation, from);
53284 find mustExist(problem, interpretation, to);
53285 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
53286 find mustInstanceOfInformationLink_class(problem,interpretation,to);
53287 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
53288 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
53289}
53290pattern refineRelation_type_attribute_Function(
53291 problem:LogicProblem, interpretation:PartialInterpretation,
53292 relationIterpretation:PartialRelationInterpretation,
53293 from: DefinedElement, to: DefinedElement)
53294{
53295 find interpretation(problem,interpretation);
53296 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53297 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
53298 find mustExist(problem, interpretation, from);
53299 find mustExist(problem, interpretation, to);
53300 find mustInstanceOfFunction_class(problem,interpretation,from);
53301 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
53302 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
53303 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
53304}
53305import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
53306import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
53307import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
53308
53309//////////
53310// 0. Util
53311//////////
53312private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
53313 PartialInterpretation.problem(interpretation,problem);
53314}
53315
53316/////////////////////////
53317// 0.1 Existence
53318/////////////////////////
53319private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53320 find interpretation(problem,interpretation);
53321 LogicProblem.elements(problem,element);
53322} or {
53323 find interpretation(problem,interpretation);
53324 PartialInterpretation.newElements(interpretation,element);
53325}
53326
53327private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53328 find mustExist(problem,interpretation,element);
53329} or {
53330 find interpretation(problem,interpretation);
53331 neg find elementCloseWorld(element);
53332 PartialInterpretation.openWorldElements(interpretation,element);
53333}
53334
53335private pattern elementCloseWorld(element:DefinedElement) {
53336 PartialInterpretation.openWorldElements(i,element);
53337 PartialInterpretation.maxNewElements(i,0);
53338} or {
53339 Scope.targetTypeInterpretation(scope,interpretation);
53340 PartialTypeInterpratation.elements(interpretation,element);
53341 Scope.maxNewElements(scope,0);
53342}
53343
53344////////////////////////
53345// 0.2 Equivalence
53346////////////////////////
53347pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
53348 find mayExist(problem,interpretation,a);
53349 find mayExist(problem,interpretation,b);
53350 a == b;
53351}
53352
53353////////////////////////
53354// 0.3 Required Patterns by TypeIndexer
53355////////////////////////
53356private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
53357 find interpretation(problem,interpretation);
53358 LogicProblem.types(problem,type);
53359 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
53360 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53361}
53362
53363private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
53364 find interpretation(problem,interpretation);
53365 LogicProblem.types(problem,type);
53366 TypeDefinition.elements(type,element);
53367} or {
53368 find interpretation(problem,interpretation);
53369 find typeInterpretation(problem,interpretation,type,typeInterpretation);
53370 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
53371}
53372
53373private pattern isPrimitive(element: PrimitiveElement) {
53374 PrimitiveElement(element);
53375}
53376
53377//////////
53378// 1. Problem-Specific Base Indexers
53379//////////
53380// 1.1 Type Indexers
53381//////////
53382// 1.1.1 primitive Type Indexers
53383//////////
53384
53385//////////
53386// 1.1.2 domain-specific Type Indexers
53387//////////
53388/**
53389 * An element must be an instance of type "FunctionalElement class".
53390 */
53391private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53392 Type.name(type,"FunctionalElement class");
53393 find directInstanceOf(problem,interpretation,element,type);
53394}
53395private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
53396 find interpretation(problem,interpretation);
53397 PartialInterpretation.scopes(interpretation,scope);
53398 Scope.targetTypeInterpretation(scope,typeInterpretation);
53399 Scope.maxNewElements(scope,0);
53400 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53401 Type.name(type,"FunctionalElement class");
53402}
53403
53404/**
53405 * An element may be an instance of type "FunctionalElement class".
53406 */
53407private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53408{
53409 find interpretation(problem,interpretation);
53410 PartialInterpretation.newElements(interpretation,element);
53411 neg find mustInstanceOfFunction_class(problem,interpretation,element);
53412 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53413 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53414 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53415 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53416 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53417 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
53418 neg find isPrimitive(element);
53419} or {
53420 find interpretation(problem,interpretation);
53421 PartialInterpretation.openWorldElements(interpretation,element);
53422 neg find mustInstanceOfFunction_class(problem,interpretation,element);
53423 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53424 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53425 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53426 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53427 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53428 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
53429 neg find isPrimitive(element);
53430} or
53431{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
53432/**
53433 * An element must be an instance of type "FunctionalArchitectureModel class".
53434 */
53435private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53436 Type.name(type,"FunctionalArchitectureModel class");
53437 find directInstanceOf(problem,interpretation,element,type);
53438}
53439private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
53440 find interpretation(problem,interpretation);
53441 PartialInterpretation.scopes(interpretation,scope);
53442 Scope.targetTypeInterpretation(scope,typeInterpretation);
53443 Scope.maxNewElements(scope,0);
53444 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53445 Type.name(type,"FunctionalArchitectureModel class");
53446}
53447
53448/**
53449 * An element may be an instance of type "FunctionalArchitectureModel class".
53450 */
53451private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53452{
53453 find interpretation(problem,interpretation);
53454 PartialInterpretation.newElements(interpretation,element);
53455 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53456 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53457 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
53458 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53459 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53460 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53461 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
53462 neg find isPrimitive(element);
53463} or {
53464 find interpretation(problem,interpretation);
53465 PartialInterpretation.openWorldElements(interpretation,element);
53466 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53467 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53468 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
53469 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53470 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53471 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53472 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
53473 neg find isPrimitive(element);
53474} or
53475{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
53476/**
53477 * An element must be an instance of type "Function class".
53478 */
53479private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53480 Type.name(type,"Function class");
53481 find directInstanceOf(problem,interpretation,element,type);
53482}
53483private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
53484 find interpretation(problem,interpretation);
53485 PartialInterpretation.scopes(interpretation,scope);
53486 Scope.targetTypeInterpretation(scope,typeInterpretation);
53487 Scope.maxNewElements(scope,0);
53488 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53489 Type.name(type,"Function class");
53490}
53491
53492/**
53493 * An element may be an instance of type "Function class".
53494 */
53495private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53496{
53497 find interpretation(problem,interpretation);
53498 PartialInterpretation.newElements(interpretation,element);
53499 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53500 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53501 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53502 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53503 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53504 neg find scopeDisallowsNewFunction_class(problem, interpretation);
53505 neg find isPrimitive(element);
53506} or {
53507 find interpretation(problem,interpretation);
53508 PartialInterpretation.openWorldElements(interpretation,element);
53509 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53510 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53511 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53512 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53513 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53514 neg find scopeDisallowsNewFunction_class(problem, interpretation);
53515 neg find isPrimitive(element);
53516} or
53517{ find mustInstanceOfFunction_class(problem,interpretation,element); }
53518/**
53519 * An element must be an instance of type "FAMTerminator class".
53520 */
53521private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53522 Type.name(type,"FAMTerminator class");
53523 find directInstanceOf(problem,interpretation,element,type);
53524}
53525private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
53526 find interpretation(problem,interpretation);
53527 PartialInterpretation.scopes(interpretation,scope);
53528 Scope.targetTypeInterpretation(scope,typeInterpretation);
53529 Scope.maxNewElements(scope,0);
53530 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53531 Type.name(type,"FAMTerminator class");
53532}
53533
53534/**
53535 * An element may be an instance of type "FAMTerminator class".
53536 */
53537private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53538{
53539 find interpretation(problem,interpretation);
53540 PartialInterpretation.newElements(interpretation,element);
53541 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53542 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53543 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53544 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53545 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53546 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
53547 neg find isPrimitive(element);
53548} or {
53549 find interpretation(problem,interpretation);
53550 PartialInterpretation.openWorldElements(interpretation,element);
53551 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53552 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53553 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53554 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53555 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53556 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
53557 neg find isPrimitive(element);
53558} or
53559{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
53560/**
53561 * An element must be an instance of type "InformationLink class".
53562 */
53563private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53564 Type.name(type,"InformationLink class");
53565 find directInstanceOf(problem,interpretation,element,type);
53566}
53567private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
53568 find interpretation(problem,interpretation);
53569 PartialInterpretation.scopes(interpretation,scope);
53570 Scope.targetTypeInterpretation(scope,typeInterpretation);
53571 Scope.maxNewElements(scope,0);
53572 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53573 Type.name(type,"InformationLink class");
53574}
53575
53576/**
53577 * An element may be an instance of type "InformationLink class".
53578 */
53579private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53580{
53581 find interpretation(problem,interpretation);
53582 PartialInterpretation.newElements(interpretation,element);
53583 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53584 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53585 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53586 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53587 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53588 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
53589 neg find isPrimitive(element);
53590} or {
53591 find interpretation(problem,interpretation);
53592 PartialInterpretation.openWorldElements(interpretation,element);
53593 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53594 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53595 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53596 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53597 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53598 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
53599 neg find isPrimitive(element);
53600} or
53601{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
53602/**
53603 * An element must be an instance of type "FunctionalInterface class".
53604 */
53605private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53606 Type.name(type,"FunctionalInterface class");
53607 find directInstanceOf(problem,interpretation,element,type);
53608}
53609private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
53610 find interpretation(problem,interpretation);
53611 PartialInterpretation.scopes(interpretation,scope);
53612 Scope.targetTypeInterpretation(scope,typeInterpretation);
53613 Scope.maxNewElements(scope,0);
53614 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53615 Type.name(type,"FunctionalInterface class");
53616}
53617
53618/**
53619 * An element may be an instance of type "FunctionalInterface class".
53620 */
53621private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53622{
53623 find interpretation(problem,interpretation);
53624 PartialInterpretation.newElements(interpretation,element);
53625 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53626 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53627 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53628 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53629 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53630 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
53631 neg find isPrimitive(element);
53632} or {
53633 find interpretation(problem,interpretation);
53634 PartialInterpretation.openWorldElements(interpretation,element);
53635 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53636 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53637 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53638 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53639 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53640 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
53641 neg find isPrimitive(element);
53642} or
53643{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
53644/**
53645 * An element must be an instance of type "FunctionalInput class".
53646 */
53647private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53648 Type.name(type,"FunctionalInput class");
53649 find directInstanceOf(problem,interpretation,element,type);
53650}
53651private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
53652 find interpretation(problem,interpretation);
53653 PartialInterpretation.scopes(interpretation,scope);
53654 Scope.targetTypeInterpretation(scope,typeInterpretation);
53655 Scope.maxNewElements(scope,0);
53656 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53657 Type.name(type,"FunctionalInput class");
53658}
53659
53660/**
53661 * An element may be an instance of type "FunctionalInput class".
53662 */
53663private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53664{
53665 find interpretation(problem,interpretation);
53666 PartialInterpretation.newElements(interpretation,element);
53667 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53668 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53669 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53670 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53671 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
53672 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53673 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
53674 neg find isPrimitive(element);
53675} or {
53676 find interpretation(problem,interpretation);
53677 PartialInterpretation.openWorldElements(interpretation,element);
53678 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53679 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53680 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53681 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53682 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
53683 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53684 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
53685 neg find isPrimitive(element);
53686} or
53687{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
53688/**
53689 * An element must be an instance of type "FunctionalOutput class".
53690 */
53691private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53692 Type.name(type,"FunctionalOutput class");
53693 find directInstanceOf(problem,interpretation,element,type);
53694}
53695private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
53696 find interpretation(problem,interpretation);
53697 PartialInterpretation.scopes(interpretation,scope);
53698 Scope.targetTypeInterpretation(scope,typeInterpretation);
53699 Scope.maxNewElements(scope,0);
53700 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53701 Type.name(type,"FunctionalOutput class");
53702}
53703
53704/**
53705 * An element may be an instance of type "FunctionalOutput class".
53706 */
53707private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53708{
53709 find interpretation(problem,interpretation);
53710 PartialInterpretation.newElements(interpretation,element);
53711 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53712 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53713 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53714 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53715 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53716 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
53717 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
53718 neg find isPrimitive(element);
53719} or {
53720 find interpretation(problem,interpretation);
53721 PartialInterpretation.openWorldElements(interpretation,element);
53722 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53723 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53724 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53725 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53726 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53727 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
53728 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
53729 neg find isPrimitive(element);
53730} or
53731{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
53732/**
53733 * An element must be an instance of type "FunctionalData class".
53734 */
53735private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53736 Type.name(type,"FunctionalData class");
53737 find directInstanceOf(problem,interpretation,element,type);
53738}
53739private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
53740 find interpretation(problem,interpretation);
53741 PartialInterpretation.scopes(interpretation,scope);
53742 Scope.targetTypeInterpretation(scope,typeInterpretation);
53743 Scope.maxNewElements(scope,0);
53744 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53745 Type.name(type,"FunctionalData class");
53746}
53747
53748/**
53749 * An element may be an instance of type "FunctionalData class".
53750 */
53751private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53752{
53753 find interpretation(problem,interpretation);
53754 PartialInterpretation.newElements(interpretation,element);
53755 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53756 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53757 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53758 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53759 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
53760 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53761 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
53762 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
53763 neg find isPrimitive(element);
53764} or {
53765 find interpretation(problem,interpretation);
53766 PartialInterpretation.openWorldElements(interpretation,element);
53767 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53768 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53769 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53770 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53771 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
53772 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
53773 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
53774 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
53775 neg find isPrimitive(element);
53776} or
53777{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
53778/**
53779 * An element must be an instance of type "FunctionType enum".
53780 */
53781private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53782 Type.name(type,"FunctionType enum");
53783 find directInstanceOf(problem,interpretation,element,type);
53784}
53785private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
53786 find interpretation(problem,interpretation);
53787 PartialInterpretation.scopes(interpretation,scope);
53788 Scope.targetTypeInterpretation(scope,typeInterpretation);
53789 Scope.maxNewElements(scope,0);
53790 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53791 Type.name(type,"FunctionType enum");
53792}
53793
53794/**
53795 * An element may be an instance of type "FunctionType enum".
53796 */
53797private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53798{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
53799/**
53800 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
53801 */
53802private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53803 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
53804 find directInstanceOf(problem,interpretation,element,type);
53805}
53806private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
53807 find interpretation(problem,interpretation);
53808 PartialInterpretation.scopes(interpretation,scope);
53809 Scope.targetTypeInterpretation(scope,typeInterpretation);
53810 Scope.maxNewElements(scope,0);
53811 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53812 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
53813}
53814
53815/**
53816 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
53817 */
53818private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53819{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
53820/**
53821 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
53822 */
53823private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
53824 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
53825 find directInstanceOf(problem,interpretation,element,type);
53826}
53827private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
53828 find interpretation(problem,interpretation);
53829 PartialInterpretation.scopes(interpretation,scope);
53830 Scope.targetTypeInterpretation(scope,typeInterpretation);
53831 Scope.maxNewElements(scope,0);
53832 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
53833 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
53834}
53835
53836/**
53837 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
53838 */
53839private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
53840{
53841 find interpretation(problem,interpretation);
53842 PartialInterpretation.newElements(interpretation,element);
53843 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53844 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53845 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53846 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53847 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53848 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
53849 neg find isPrimitive(element);
53850} or {
53851 find interpretation(problem,interpretation);
53852 PartialInterpretation.openWorldElements(interpretation,element);
53853 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
53854 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
53855 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
53856 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
53857 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
53858 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
53859 neg find isPrimitive(element);
53860} or
53861{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
53862
53863//////////
53864// 1.2 Relation Declaration Indexers
53865//////////
53866/**
53867 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
53868 */
53869private pattern mustInRelationinterface_reference_FunctionalElement(
53870 problem:LogicProblem, interpretation:PartialInterpretation,
53871 source: DefinedElement, target:DefinedElement)
53872{
53873 find interpretation(problem,interpretation);
53874 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53875 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
53876 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53877 BinaryElementRelationLink.param1(link,source);
53878 BinaryElementRelationLink.param2(link,target);
53879}
53880/**
53881 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
53882 */
53883private pattern mayInRelationinterface_reference_FunctionalElement(
53884 problem:LogicProblem, interpretation:PartialInterpretation,
53885 source: DefinedElement, target:DefinedElement)
53886{
53887 find interpretation(problem,interpretation);
53888 // The two endpoint of the link have to exist
53889 find mayExist(problem, interpretation, source);
53890 find mayExist(problem, interpretation, target);
53891 // Type consistency
53892 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
53893 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
53894 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53895 // the upper bound of the multiplicity should be considered.
53896 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
53897 check(numberOfExistingReferences < 1);
53898 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53899 // the upper bound of the opposite reference multiplicity should be considered.
53900 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
53901 check(numberOfExistingOppositeReferences < 1);
53902 // The reference is containment, then a new reference cannot be create if:
53903 // 1. Multiple parents
53904 neg find mustContains4(problem,interpretation,_,target);
53905 // 2. Circle in the containment hierarchy
53906 neg find mustTransitiveContains(source,target);
53907} or {
53908 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
53909}
53910/**
53911 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
53912 */
53913private pattern mustInRelationmodel_reference_FunctionalElement(
53914 problem:LogicProblem, interpretation:PartialInterpretation,
53915 source: DefinedElement, target:DefinedElement)
53916{
53917 find interpretation(problem,interpretation);
53918 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53919 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
53920 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53921 BinaryElementRelationLink.param1(link,source);
53922 BinaryElementRelationLink.param2(link,target);
53923}
53924/**
53925 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
53926 */
53927private pattern mayInRelationmodel_reference_FunctionalElement(
53928 problem:LogicProblem, interpretation:PartialInterpretation,
53929 source: DefinedElement, target:DefinedElement)
53930{
53931 find interpretation(problem,interpretation);
53932 // The two endpoint of the link have to exist
53933 find mayExist(problem, interpretation, source);
53934 find mayExist(problem, interpretation, target);
53935 // Type consistency
53936 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
53937 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
53938 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53939 // the upper bound of the multiplicity should be considered.
53940 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
53941 check(numberOfExistingReferences < 1);
53942} or {
53943 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
53944}
53945/**
53946 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
53947 */
53948private pattern mustInRelationparent_reference_FunctionalElement(
53949 problem:LogicProblem, interpretation:PartialInterpretation,
53950 source: DefinedElement, target:DefinedElement)
53951{
53952 find interpretation(problem,interpretation);
53953 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53954 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
53955 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53956 BinaryElementRelationLink.param1(link,source);
53957 BinaryElementRelationLink.param2(link,target);
53958}
53959/**
53960 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
53961 */
53962private pattern mayInRelationparent_reference_FunctionalElement(
53963 problem:LogicProblem, interpretation:PartialInterpretation,
53964 source: DefinedElement, target:DefinedElement)
53965{
53966 find interpretation(problem,interpretation);
53967 // The two endpoint of the link have to exist
53968 find mayExist(problem, interpretation, source);
53969 find mayExist(problem, interpretation, target);
53970 // Type consistency
53971 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
53972 find mayInstanceOfFunction_class(problem,interpretation,target);
53973 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53974 // the upper bound of the multiplicity should be considered.
53975 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
53976 check(numberOfExistingReferences < 1);
53977 // The eOpposite of the reference is containment, then a referene cannot be created if
53978 // 1. Multiple parents
53979 neg find mustContains4(problem,interpretation,source,_);
53980 // 2. Circle in the containment hierarchy
53981 neg find mustTransitiveContains(source,target);
53982} or {
53983 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
53984}
53985/**
53986 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
53987 */
53988private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
53989 problem:LogicProblem, interpretation:PartialInterpretation,
53990 source: DefinedElement, target:DefinedElement)
53991{
53992 find interpretation(problem,interpretation);
53993 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53994 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
53995 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53996 BinaryElementRelationLink.param1(link,source);
53997 BinaryElementRelationLink.param2(link,target);
53998}
53999/**
54000 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
54001 */
54002private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
54003 problem:LogicProblem, interpretation:PartialInterpretation,
54004 source: DefinedElement, target:DefinedElement)
54005{
54006 find interpretation(problem,interpretation);
54007 // The two endpoint of the link have to exist
54008 find mayExist(problem, interpretation, source);
54009 find mayExist(problem, interpretation, target);
54010 // Type consistency
54011 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
54012 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
54013 // The reference is containment, then a new reference cannot be create if:
54014 // 1. Multiple parents
54015 neg find mustContains4(problem,interpretation,_,target);
54016 // 2. Circle in the containment hierarchy
54017 neg find mustTransitiveContains(source,target);
54018} or {
54019 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
54020}
54021/**
54022 * Matcher for detecting tuples t where []subElements reference Function(source,target)
54023 */
54024private pattern mustInRelationsubElements_reference_Function(
54025 problem:LogicProblem, interpretation:PartialInterpretation,
54026 source: DefinedElement, target:DefinedElement)
54027{
54028 find interpretation(problem,interpretation);
54029 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54030 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
54031 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54032 BinaryElementRelationLink.param1(link,source);
54033 BinaryElementRelationLink.param2(link,target);
54034}
54035/**
54036 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
54037 */
54038private pattern mayInRelationsubElements_reference_Function(
54039 problem:LogicProblem, interpretation:PartialInterpretation,
54040 source: DefinedElement, target:DefinedElement)
54041{
54042 find interpretation(problem,interpretation);
54043 // The two endpoint of the link have to exist
54044 find mayExist(problem, interpretation, source);
54045 find mayExist(problem, interpretation, target);
54046 // Type consistency
54047 find mayInstanceOfFunction_class(problem,interpretation,source);
54048 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
54049 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
54050 // the upper bound of the opposite reference multiplicity should be considered.
54051 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
54052 check(numberOfExistingOppositeReferences < 1);
54053 // The reference is containment, then a new reference cannot be create if:
54054 // 1. Multiple parents
54055 neg find mustContains4(problem,interpretation,_,target);
54056 // 2. Circle in the containment hierarchy
54057 neg find mustTransitiveContains(source,target);
54058} or {
54059 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
54060}
54061/**
54062 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
54063 */
54064private pattern mustInRelationdata_reference_FAMTerminator(
54065 problem:LogicProblem, interpretation:PartialInterpretation,
54066 source: DefinedElement, target:DefinedElement)
54067{
54068 find interpretation(problem,interpretation);
54069 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54070 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
54071 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54072 BinaryElementRelationLink.param1(link,source);
54073 BinaryElementRelationLink.param2(link,target);
54074}
54075/**
54076 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
54077 */
54078private pattern mayInRelationdata_reference_FAMTerminator(
54079 problem:LogicProblem, interpretation:PartialInterpretation,
54080 source: DefinedElement, target:DefinedElement)
54081{
54082 find interpretation(problem,interpretation);
54083 // The two endpoint of the link have to exist
54084 find mayExist(problem, interpretation, source);
54085 find mayExist(problem, interpretation, target);
54086 // Type consistency
54087 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
54088 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
54089 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54090 // the upper bound of the multiplicity should be considered.
54091 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
54092 check(numberOfExistingReferences < 1);
54093 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
54094 // the upper bound of the opposite reference multiplicity should be considered.
54095 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
54096 check(numberOfExistingOppositeReferences < 1);
54097 // The eOpposite of the reference is containment, then a referene cannot be created if
54098 // 1. Multiple parents
54099 neg find mustContains4(problem,interpretation,source,_);
54100 // 2. Circle in the containment hierarchy
54101 neg find mustTransitiveContains(source,target);
54102} or {
54103 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
54104}
54105/**
54106 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
54107 */
54108private pattern mustInRelationfrom_reference_InformationLink(
54109 problem:LogicProblem, interpretation:PartialInterpretation,
54110 source: DefinedElement, target:DefinedElement)
54111{
54112 find interpretation(problem,interpretation);
54113 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54114 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
54115 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54116 BinaryElementRelationLink.param1(link,source);
54117 BinaryElementRelationLink.param2(link,target);
54118}
54119/**
54120 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
54121 */
54122private pattern mayInRelationfrom_reference_InformationLink(
54123 problem:LogicProblem, interpretation:PartialInterpretation,
54124 source: DefinedElement, target:DefinedElement)
54125{
54126 find interpretation(problem,interpretation);
54127 // The two endpoint of the link have to exist
54128 find mayExist(problem, interpretation, source);
54129 find mayExist(problem, interpretation, target);
54130 // Type consistency
54131 find mayInstanceOfInformationLink_class(problem,interpretation,source);
54132 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
54133 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54134 // the upper bound of the multiplicity should be considered.
54135 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
54136 check(numberOfExistingReferences < 1);
54137 // The eOpposite of the reference is containment, then a referene cannot be created if
54138 // 1. Multiple parents
54139 neg find mustContains4(problem,interpretation,source,_);
54140 // 2. Circle in the containment hierarchy
54141 neg find mustTransitiveContains(source,target);
54142} or {
54143 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
54144}
54145/**
54146 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
54147 */
54148private pattern mustInRelationto_reference_InformationLink(
54149 problem:LogicProblem, interpretation:PartialInterpretation,
54150 source: DefinedElement, target:DefinedElement)
54151{
54152 find interpretation(problem,interpretation);
54153 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54154 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
54155 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54156 BinaryElementRelationLink.param1(link,source);
54157 BinaryElementRelationLink.param2(link,target);
54158}
54159/**
54160 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
54161 */
54162private pattern mayInRelationto_reference_InformationLink(
54163 problem:LogicProblem, interpretation:PartialInterpretation,
54164 source: DefinedElement, target:DefinedElement)
54165{
54166 find interpretation(problem,interpretation);
54167 // The two endpoint of the link have to exist
54168 find mayExist(problem, interpretation, source);
54169 find mayExist(problem, interpretation, target);
54170 // Type consistency
54171 find mayInstanceOfInformationLink_class(problem,interpretation,source);
54172 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
54173 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54174 // the upper bound of the multiplicity should be considered.
54175 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
54176 check(numberOfExistingReferences < 1);
54177} or {
54178 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
54179}
54180/**
54181 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
54182 */
54183private pattern mustInRelationdata_reference_FunctionalInterface(
54184 problem:LogicProblem, interpretation:PartialInterpretation,
54185 source: DefinedElement, target:DefinedElement)
54186{
54187 find interpretation(problem,interpretation);
54188 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54189 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
54190 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54191 BinaryElementRelationLink.param1(link,source);
54192 BinaryElementRelationLink.param2(link,target);
54193}
54194/**
54195 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
54196 */
54197private pattern mayInRelationdata_reference_FunctionalInterface(
54198 problem:LogicProblem, interpretation:PartialInterpretation,
54199 source: DefinedElement, target:DefinedElement)
54200{
54201 find interpretation(problem,interpretation);
54202 // The two endpoint of the link have to exist
54203 find mayExist(problem, interpretation, source);
54204 find mayExist(problem, interpretation, target);
54205 // Type consistency
54206 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
54207 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
54208 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
54209 // the upper bound of the opposite reference multiplicity should be considered.
54210 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
54211 check(numberOfExistingOppositeReferences < 1);
54212 // The reference is containment, then a new reference cannot be create if:
54213 // 1. Multiple parents
54214 neg find mustContains4(problem,interpretation,_,target);
54215 // 2. Circle in the containment hierarchy
54216 neg find mustTransitiveContains(source,target);
54217} or {
54218 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
54219}
54220/**
54221 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
54222 */
54223private pattern mustInRelationelement_reference_FunctionalInterface(
54224 problem:LogicProblem, interpretation:PartialInterpretation,
54225 source: DefinedElement, target:DefinedElement)
54226{
54227 find interpretation(problem,interpretation);
54228 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54229 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
54230 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54231 BinaryElementRelationLink.param1(link,source);
54232 BinaryElementRelationLink.param2(link,target);
54233}
54234/**
54235 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
54236 */
54237private pattern mayInRelationelement_reference_FunctionalInterface(
54238 problem:LogicProblem, interpretation:PartialInterpretation,
54239 source: DefinedElement, target:DefinedElement)
54240{
54241 find interpretation(problem,interpretation);
54242 // The two endpoint of the link have to exist
54243 find mayExist(problem, interpretation, source);
54244 find mayExist(problem, interpretation, target);
54245 // Type consistency
54246 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
54247 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
54248 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54249 // the upper bound of the multiplicity should be considered.
54250 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
54251 check(numberOfExistingReferences < 1);
54252 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
54253 // the upper bound of the opposite reference multiplicity should be considered.
54254 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
54255 check(numberOfExistingOppositeReferences < 1);
54256 // The eOpposite of the reference is containment, then a referene cannot be created if
54257 // 1. Multiple parents
54258 neg find mustContains4(problem,interpretation,source,_);
54259 // 2. Circle in the containment hierarchy
54260 neg find mustTransitiveContains(source,target);
54261} or {
54262 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
54263}
54264/**
54265 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
54266 */
54267private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
54268 problem:LogicProblem, interpretation:PartialInterpretation,
54269 source: DefinedElement, target:DefinedElement)
54270{
54271 find interpretation(problem,interpretation);
54272 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54273 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
54274 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54275 BinaryElementRelationLink.param1(link,source);
54276 BinaryElementRelationLink.param2(link,target);
54277}
54278/**
54279 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
54280 */
54281private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
54282 problem:LogicProblem, interpretation:PartialInterpretation,
54283 source: DefinedElement, target:DefinedElement)
54284{
54285 find interpretation(problem,interpretation);
54286 // The two endpoint of the link have to exist
54287 find mayExist(problem, interpretation, source);
54288 find mayExist(problem, interpretation, target);
54289 // Type consistency
54290 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
54291 find mayInstanceOfInformationLink_class(problem,interpretation,target);
54292 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
54293 // the upper bound of the opposite reference multiplicity should be considered.
54294 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
54295 check(numberOfExistingOppositeReferences < 1);
54296} or {
54297 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
54298}
54299/**
54300 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
54301 */
54302private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
54303 problem:LogicProblem, interpretation:PartialInterpretation,
54304 source: DefinedElement, target:DefinedElement)
54305{
54306 find interpretation(problem,interpretation);
54307 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54308 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
54309 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54310 BinaryElementRelationLink.param1(link,source);
54311 BinaryElementRelationLink.param2(link,target);
54312}
54313/**
54314 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
54315 */
54316private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
54317 problem:LogicProblem, interpretation:PartialInterpretation,
54318 source: DefinedElement, target:DefinedElement)
54319{
54320 find interpretation(problem,interpretation);
54321 // The two endpoint of the link have to exist
54322 find mayExist(problem, interpretation, source);
54323 find mayExist(problem, interpretation, target);
54324 // Type consistency
54325 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
54326 find mayInstanceOfInformationLink_class(problem,interpretation,target);
54327 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
54328 // the upper bound of the opposite reference multiplicity should be considered.
54329 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
54330 check(numberOfExistingOppositeReferences < 1);
54331 // The reference is containment, then a new reference cannot be create if:
54332 // 1. Multiple parents
54333 neg find mustContains4(problem,interpretation,_,target);
54334 // 2. Circle in the containment hierarchy
54335 neg find mustTransitiveContains(source,target);
54336} or {
54337 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
54338}
54339/**
54340 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
54341 */
54342private pattern mustInRelationterminator_reference_FunctionalData(
54343 problem:LogicProblem, interpretation:PartialInterpretation,
54344 source: DefinedElement, target:DefinedElement)
54345{
54346 find interpretation(problem,interpretation);
54347 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54348 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
54349 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54350 BinaryElementRelationLink.param1(link,source);
54351 BinaryElementRelationLink.param2(link,target);
54352}
54353/**
54354 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
54355 */
54356private pattern mayInRelationterminator_reference_FunctionalData(
54357 problem:LogicProblem, interpretation:PartialInterpretation,
54358 source: DefinedElement, target:DefinedElement)
54359{
54360 find interpretation(problem,interpretation);
54361 // The two endpoint of the link have to exist
54362 find mayExist(problem, interpretation, source);
54363 find mayExist(problem, interpretation, target);
54364 // Type consistency
54365 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
54366 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
54367 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54368 // the upper bound of the multiplicity should be considered.
54369 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
54370 check(numberOfExistingReferences < 1);
54371 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
54372 // the upper bound of the opposite reference multiplicity should be considered.
54373 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
54374 check(numberOfExistingOppositeReferences < 1);
54375 // The reference is containment, then a new reference cannot be create if:
54376 // 1. Multiple parents
54377 neg find mustContains4(problem,interpretation,_,target);
54378 // 2. Circle in the containment hierarchy
54379 neg find mustTransitiveContains(source,target);
54380} or {
54381 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
54382}
54383/**
54384 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
54385 */
54386private pattern mustInRelationinterface_reference_FunctionalData(
54387 problem:LogicProblem, interpretation:PartialInterpretation,
54388 source: DefinedElement, target:DefinedElement)
54389{
54390 find interpretation(problem,interpretation);
54391 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54392 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
54393 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54394 BinaryElementRelationLink.param1(link,source);
54395 BinaryElementRelationLink.param2(link,target);
54396}
54397/**
54398 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
54399 */
54400private pattern mayInRelationinterface_reference_FunctionalData(
54401 problem:LogicProblem, interpretation:PartialInterpretation,
54402 source: DefinedElement, target:DefinedElement)
54403{
54404 find interpretation(problem,interpretation);
54405 // The two endpoint of the link have to exist
54406 find mayExist(problem, interpretation, source);
54407 find mayExist(problem, interpretation, target);
54408 // Type consistency
54409 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
54410 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
54411 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54412 // the upper bound of the multiplicity should be considered.
54413 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
54414 check(numberOfExistingReferences < 1);
54415 // The eOpposite of the reference is containment, then a referene cannot be created if
54416 // 1. Multiple parents
54417 neg find mustContains4(problem,interpretation,source,_);
54418 // 2. Circle in the containment hierarchy
54419 neg find mustTransitiveContains(source,target);
54420} or {
54421 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
54422}
54423/**
54424 * Matcher for detecting tuples t where []type attribute Function(source,target)
54425 */
54426private pattern mustInRelationtype_attribute_Function(
54427 problem:LogicProblem, interpretation:PartialInterpretation,
54428 source: DefinedElement, target:DefinedElement)
54429{
54430 find interpretation(problem,interpretation);
54431 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54432 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
54433 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54434 BinaryElementRelationLink.param1(link,source);
54435 BinaryElementRelationLink.param2(link,target);
54436}
54437/**
54438 * Matcher for detecting tuples t where <>type attribute Function(source,target)
54439 */
54440private pattern mayInRelationtype_attribute_Function(
54441 problem:LogicProblem, interpretation:PartialInterpretation,
54442 source: DefinedElement, target:DefinedElement)
54443{
54444 find interpretation(problem,interpretation);
54445 // The two endpoint of the link have to exist
54446 find mayExist(problem, interpretation, source);
54447 find mayExist(problem, interpretation, target);
54448 // Type consistency
54449 find mayInstanceOfFunction_class(problem,interpretation,source);
54450 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
54451 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54452 // the upper bound of the multiplicity should be considered.
54453 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
54454 check(numberOfExistingReferences < 1);
54455} or {
54456 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
54457}
54458
54459//////////
54460// 1.3 Relation Definition Indexers
54461//////////
54462// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation
54463private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(
54464 problem:LogicProblem, interpretation:PartialInterpretation,
54465 var_T, var_I)
54466{
54467 find interpretation(problem,interpretation);
54468 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
54469 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
54470 // T is exported
54471 // I is exported
54472 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
54473 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
54474 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
54475 var_virtual0 == var_I;
54476 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
54477 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
54478 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
54479 var_virtual1 == var_T;
54480}or{
54481 find interpretation(problem,interpretation);
54482 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
54483 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
54484 // T is exported
54485 // I is exported
54486 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
54487 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
54488 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
54489 var_virtual0 == var_In;
54490 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
54491 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
54492 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
54493 var_virtual1 == var_T;
54494}
54495private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(
54496 problem:LogicProblem, interpretation:PartialInterpretation,
54497 var_T, var_I)
54498{
54499 find interpretation(problem,interpretation);
54500 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
54501 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
54502 // T is exported
54503 // I is exported
54504 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
54505 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
54506 find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
54507 find mayEquivalent(problem, interpretation, var_virtual0, var_I);
54508 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
54509 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
54510 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
54511 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
54512}or{
54513 find interpretation(problem,interpretation);
54514 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
54515 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
54516 // T is exported
54517 // I is exported
54518 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
54519 find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
54520 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
54521 find mayEquivalent(problem, interpretation, var_virtual0, var_In);
54522 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In);
54523 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
54524 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
54525 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
54526}
54527private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(
54528 problem:LogicProblem, interpretation:PartialInterpretation,
54529 var_T, var_I)
54530{
54531 find interpretation(problem,interpretation);
54532 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
54533 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
54534 // T is exported
54535 // I is exported
54536 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
54537 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
54538 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
54539 var_virtual0 == var_I;
54540 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
54541 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
54542 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
54543 var_virtual1 == var_T;
54544}or{
54545 find interpretation(problem,interpretation);
54546 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
54547 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
54548 // T is exported
54549 // I is exported
54550 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
54551 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
54552 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
54553 var_virtual0 == var_In;
54554 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
54555 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
54556 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
54557 var_virtual1 == var_T;
54558}
54559
54560//////////
54561// 1.4 Containment Indexer
54562//////////
54563private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
54564 find mustContains4(_,_,source,target);
54565}
54566
54567private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
54568 source: DefinedElement, target: DefinedElement)
54569 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
54570
54571 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
54572
54573 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
54574
54575 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
54576
54577 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
54578
54579 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
54580
54581private pattern mustTransitiveContains(source,target) {
54582 find mustContains2+(source,target);
54583}
54584
54585//////////
54586// 2. Invalidation Indexers
54587//////////
54588// 2.1 Invalidated by WF Queries
54589//////////
54590pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation,
54591 var_T, var_I)
54592{
54593 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I);
54594}
54595
54596//////////
54597// 3. Unfinishedness Indexers
54598//////////
54599// 3.1 Unfinishedness Measured by Multiplicity
54600//////////
54601pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
54602 find interpretation(problem,interpretation);
54603 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54604 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
54605 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
54606 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
54607 check(numberOfExistingReferences < 1);
54608 missingMultiplicity == eval(1-numberOfExistingReferences);
54609}
54610pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
54611 find interpretation(problem,interpretation);
54612 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54613 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
54614 find mustInstanceOfInformationLink_class(problem,interpretation,object);
54615 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
54616 check(numberOfExistingReferences < 1);
54617 missingMultiplicity == eval(1-numberOfExistingReferences);
54618}
54619pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
54620 find interpretation(problem,interpretation);
54621 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54622 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
54623 find mustInstanceOfFunction_class(problem,interpretation,object);
54624 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
54625 check(numberOfExistingReferences < 1);
54626 missingMultiplicity == eval(1-numberOfExistingReferences);
54627}
54628
54629//////////
54630// 3.2 Unfinishedness Measured by WF Queries
54631//////////
54632pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation,
54633 var_T, var_I)
54634{
54635 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I);
54636}
54637
54638//////////
54639// 4. Refinement Indexers
54640//////////
54641// 4.1 Object constructors
54642//////////
54643private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
54644{
54645 find interpretation(problem,interpretation);
54646 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
54647 find mustExist(problem, interpretation, root);
54648}or{
54649 find interpretation(problem,interpretation);
54650 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
54651 find mustExist(problem, interpretation, root);
54652}or{
54653 find interpretation(problem,interpretation);
54654 find mustInstanceOfInformationLink_class(problem,interpretation,root);
54655 find mustExist(problem, interpretation, root);
54656}or{
54657 find interpretation(problem,interpretation);
54658 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
54659 find mustExist(problem, interpretation, root);
54660}or{
54661 find interpretation(problem,interpretation);
54662 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
54663 find mustExist(problem, interpretation, root);
54664}or{
54665 find interpretation(problem,interpretation);
54666 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
54667 find mustExist(problem, interpretation, root);
54668}or{
54669 find interpretation(problem,interpretation);
54670 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
54671 find mustExist(problem, interpretation, root);
54672}or{
54673 find interpretation(problem,interpretation);
54674 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
54675 find mustExist(problem, interpretation, root);
54676}or{
54677 find interpretation(problem,interpretation);
54678 find mustInstanceOfFunction_class(problem,interpretation,root);
54679 find mustExist(problem, interpretation, root);
54680}or{
54681 find interpretation(problem,interpretation);
54682 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
54683 find mustExist(problem, interpretation, root);
54684}or{
54685 find interpretation(problem,interpretation);
54686 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
54687 find mustExist(problem, interpretation, root);
54688}
54689pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
54690 problem:LogicProblem, interpretation:PartialInterpretation,
54691 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
54692 container:DefinedElement)
54693{
54694 find interpretation(problem,interpretation);
54695 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54696 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
54697 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
54698 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
54699 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
54700 find mayInstanceOfFunction_class(problem,interpretation,newObject);
54701 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
54702 find mustExist(problem, interpretation, container);
54703 neg find mustExist(problem, interpretation, newObject);
54704}
54705pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
54706 problem:LogicProblem, interpretation:PartialInterpretation,
54707 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
54708 container:DefinedElement)
54709{
54710 find interpretation(problem,interpretation);
54711 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54712 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
54713 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
54714 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
54715 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
54716 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
54717 find mustInstanceOfFunction_class(problem,interpretation,container);
54718 find mayInstanceOfFunction_class(problem,interpretation,newObject);
54719 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
54720 find mustExist(problem, interpretation, container);
54721 neg find mustExist(problem, interpretation, newObject);
54722}
54723pattern createObject_Function_class(
54724 problem:LogicProblem, interpretation:PartialInterpretation,
54725 typeInterpretation:PartialComplexTypeInterpretation)
54726{
54727 find interpretation(problem,interpretation);
54728 neg find hasElementInContainment(problem,interpretation);
54729 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54730 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
54731 find mayInstanceOfFunction_class(problem,interpretation,newObject);
54732 find mayExist(problem, interpretation, newObject);
54733 neg find mustExist(problem, interpretation, newObject);
54734}
54735pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
54736 problem:LogicProblem, interpretation:PartialInterpretation,
54737 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
54738 container:DefinedElement)
54739{
54740 find interpretation(problem,interpretation);
54741 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54742 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
54743 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
54744 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
54745 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
54746 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
54747 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
54748 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
54749 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
54750 find mustExist(problem, interpretation, container);
54751 neg find mustExist(problem, interpretation, newObject);
54752}
54753pattern createObject_FAMTerminator_class(
54754 problem:LogicProblem, interpretation:PartialInterpretation,
54755 typeInterpretation:PartialComplexTypeInterpretation)
54756{
54757 find interpretation(problem,interpretation);
54758 neg find hasElementInContainment(problem,interpretation);
54759 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54760 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
54761 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
54762 find mayExist(problem, interpretation, newObject);
54763 neg find mustExist(problem, interpretation, newObject);
54764}
54765pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
54766 problem:LogicProblem, interpretation:PartialInterpretation,
54767 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
54768 container:DefinedElement)
54769{
54770 find interpretation(problem,interpretation);
54771 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54772 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
54773 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
54774 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
54775 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
54776 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
54777 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
54778 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
54779 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
54780 find mustExist(problem, interpretation, container);
54781 neg find mustExist(problem, interpretation, newObject);
54782}
54783pattern createObject_InformationLink_class(
54784 problem:LogicProblem, interpretation:PartialInterpretation,
54785 typeInterpretation:PartialComplexTypeInterpretation)
54786{
54787 find interpretation(problem,interpretation);
54788 neg find hasElementInContainment(problem,interpretation);
54789 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54790 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
54791 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
54792 find mayExist(problem, interpretation, newObject);
54793 neg find mustExist(problem, interpretation, newObject);
54794}
54795pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
54796 problem:LogicProblem, interpretation:PartialInterpretation,
54797 typeInterpretation:PartialComplexTypeInterpretation)
54798{
54799 find interpretation(problem,interpretation);
54800 neg find hasElementInContainment(problem,interpretation);
54801 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54802 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
54803 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
54804 find mayExist(problem, interpretation, newObject);
54805 neg find mustExist(problem, interpretation, newObject);
54806}
54807pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
54808 problem:LogicProblem, interpretation:PartialInterpretation,
54809 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
54810 container:DefinedElement)
54811{
54812 find interpretation(problem,interpretation);
54813 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54814 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
54815 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
54816 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
54817 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
54818 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
54819 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
54820 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
54821 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
54822 find mustExist(problem, interpretation, container);
54823 neg find mustExist(problem, interpretation, newObject);
54824}
54825pattern createObject_FunctionalInterface_class(
54826 problem:LogicProblem, interpretation:PartialInterpretation,
54827 typeInterpretation:PartialComplexTypeInterpretation)
54828{
54829 find interpretation(problem,interpretation);
54830 neg find hasElementInContainment(problem,interpretation);
54831 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54832 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
54833 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
54834 find mayExist(problem, interpretation, newObject);
54835 neg find mustExist(problem, interpretation, newObject);
54836}
54837pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
54838 problem:LogicProblem, interpretation:PartialInterpretation,
54839 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
54840 container:DefinedElement)
54841{
54842 find interpretation(problem,interpretation);
54843 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54844 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
54845 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
54846 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
54847 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
54848 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
54849 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
54850 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
54851 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
54852 find mustExist(problem, interpretation, container);
54853 neg find mustExist(problem, interpretation, newObject);
54854}
54855pattern createObject_FunctionalOutput_class(
54856 problem:LogicProblem, interpretation:PartialInterpretation,
54857 typeInterpretation:PartialComplexTypeInterpretation)
54858{
54859 find interpretation(problem,interpretation);
54860 neg find hasElementInContainment(problem,interpretation);
54861 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54862 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
54863 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
54864 find mayExist(problem, interpretation, newObject);
54865 neg find mustExist(problem, interpretation, newObject);
54866}
54867pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
54868 problem:LogicProblem, interpretation:PartialInterpretation,
54869 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
54870 container:DefinedElement)
54871{
54872 find interpretation(problem,interpretation);
54873 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54874 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
54875 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
54876 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
54877 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
54878 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
54879 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
54880 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
54881 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
54882 find mustExist(problem, interpretation, container);
54883 neg find mustExist(problem, interpretation, newObject);
54884}
54885pattern createObject_FunctionalInput_class(
54886 problem:LogicProblem, interpretation:PartialInterpretation,
54887 typeInterpretation:PartialComplexTypeInterpretation)
54888{
54889 find interpretation(problem,interpretation);
54890 neg find hasElementInContainment(problem,interpretation);
54891 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
54892 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
54893 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
54894 find mayExist(problem, interpretation, newObject);
54895 neg find mustExist(problem, interpretation, newObject);
54896}
54897
54898//////////
54899// 4.2 Type refinement
54900//////////
54901pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
54902 find interpretation(problem,interpretation);
54903 PartialInterpretation.newElements(interpretation,element);
54904 find mayInstanceOfFunction_class(problem,interpretation,element);
54905 neg find mustInstanceOfFunction_class(problem,interpretation,element);
54906 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
54907 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
54908 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
54909 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
54910 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
54911}
54912pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
54913 find interpretation(problem,interpretation);
54914 PartialInterpretation.newElements(interpretation,element);
54915 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
54916 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
54917 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
54918 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
54919 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
54920 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
54921 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
54922}
54923pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
54924 find interpretation(problem,interpretation);
54925 PartialInterpretation.newElements(interpretation,element);
54926 find mayInstanceOfInformationLink_class(problem,interpretation,element);
54927 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
54928 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
54929 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
54930 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
54931 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
54932 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
54933}
54934pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
54935 find interpretation(problem,interpretation);
54936 PartialInterpretation.newElements(interpretation,element);
54937 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
54938 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
54939 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
54940 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
54941 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
54942 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
54943 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
54944}
54945pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
54946 find interpretation(problem,interpretation);
54947 PartialInterpretation.newElements(interpretation,element);
54948 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
54949 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
54950 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
54951 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
54952 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
54953 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
54954 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
54955}
54956pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
54957 find interpretation(problem,interpretation);
54958 PartialInterpretation.newElements(interpretation,element);
54959 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
54960 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
54961 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
54962 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
54963 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
54964 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
54965 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
54966 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
54967}
54968pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
54969 find interpretation(problem,interpretation);
54970 PartialInterpretation.newElements(interpretation,element);
54971 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
54972 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
54973 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
54974 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
54975 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
54976 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
54977 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
54978 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
54979}
54980
54981//////////
54982// 4.3 Relation refinement
54983//////////
54984pattern refineRelation_model_reference_FunctionalElement(
54985 problem:LogicProblem, interpretation:PartialInterpretation,
54986 relationIterpretation:PartialRelationInterpretation,
54987 from: DefinedElement, to: DefinedElement)
54988{
54989 find interpretation(problem,interpretation);
54990 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54991 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
54992 find mustExist(problem, interpretation, from);
54993 find mustExist(problem, interpretation, to);
54994 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
54995 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
54996 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
54997 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
54998}
54999pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
55000 problem:LogicProblem, interpretation:PartialInterpretation,
55001 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
55002 from: DefinedElement, to: DefinedElement)
55003{
55004 find interpretation(problem,interpretation);
55005 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55006 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
55007 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
55008 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
55009 find mustExist(problem, interpretation, from);
55010 find mustExist(problem, interpretation, to);
55011 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
55012 find mustInstanceOfInformationLink_class(problem,interpretation,to);
55013 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
55014 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
55015}
55016pattern refineRelation_type_attribute_Function(
55017 problem:LogicProblem, interpretation:PartialInterpretation,
55018 relationIterpretation:PartialRelationInterpretation,
55019 from: DefinedElement, to: DefinedElement)
55020{
55021 find interpretation(problem,interpretation);
55022 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55023 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
55024 find mustExist(problem, interpretation, from);
55025 find mustExist(problem, interpretation, to);
55026 find mustInstanceOfFunction_class(problem,interpretation,from);
55027 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
55028 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
55029 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
55030}
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 f221cce7..061a233a 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,7 +1,7 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<language:LogicProblem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/ecore2logicannotation" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" xmlns:language_1="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"> 2<language:LogicProblem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/ecore2logicannotation" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" xmlns:language_1="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:viatra2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/viatra2logicannotation">
3 <types xsi:type="language_1:TypeDeclaration" name="FunctionalElement class" subtypes="//@types.2" isAbstract="true"/> 3 <types xsi:type="language_1:TypeDeclaration" name="FunctionalElement class" subtypes="//@types.2" isAbstract="true"/>
4 <types xsi:type="language_1:TypeDeclaration" name="FunctionalArchitectureModel class"/> 4 <types xsi:type="language_1:TypeDeclaration" name="FunctionalArchitectureModel class" subtypes="//@types.10 //@types.11" isAbstract="true"/>
5 <types xsi:type="language_1:TypeDeclaration" name="Function class" supertypes="//@types.0"/> 5 <types xsi:type="language_1:TypeDeclaration" name="Function class" supertypes="//@types.0"/>
6 <types xsi:type="language_1:TypeDeclaration" name="FAMTerminator class"/> 6 <types xsi:type="language_1:TypeDeclaration" name="FAMTerminator class"/>
7 <types xsi:type="language_1:TypeDeclaration" name="InformationLink class"/> 7 <types xsi:type="language_1:TypeDeclaration" name="InformationLink class"/>
@@ -10,6 +10,8 @@
10 <types xsi:type="language_1:TypeDeclaration" name="FunctionalOutput class" supertypes="//@types.8"/> 10 <types xsi:type="language_1:TypeDeclaration" name="FunctionalOutput class" supertypes="//@types.8"/>
11 <types xsi:type="language_1:TypeDeclaration" name="FunctionalData class" subtypes="//@types.6 //@types.7" isAbstract="true"/> 11 <types xsi:type="language_1:TypeDeclaration" name="FunctionalData class" subtypes="//@types.6 //@types.7" isAbstract="true"/>
12 <types xsi:type="language_1:TypeDefinition" name="FunctionType enum" elements="//@elements.0 //@elements.1 //@elements.2"/> 12 <types xsi:type="language_1:TypeDefinition" name="FunctionType enum" elements="//@elements.0 //@elements.1 //@elements.2"/>
13 <types xsi:type="language_1:TypeDefinition" name="FunctionalArchitectureModel class DefinedPart" supertypes="//@types.1" elements="//@elements.3"/>
14 <types xsi:type="language_1:TypeDeclaration" name="FunctionalArchitectureModel class UndefinedPart" supertypes="//@types.1"/>
13 <assertions name="upperMultiplicity interface FunctionalElement" annotations="//@annotations.0"> 15 <assertions name="upperMultiplicity interface FunctionalElement" annotations="//@annotations.0">
14 <value xsi:type="language_1:Forall"> 16 <value xsi:type="language_1:Forall">
15 <quantifiedVariables name="src"> 17 <quantifiedVariables name="src">
@@ -494,6 +496,22 @@
494 </expression> 496 </expression>
495 </value> 497 </value>
496 </assertions> 498 </assertions>
499 <assertions name="errorpattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation" annotations="//@annotations.20">
500 <value xsi:type="language_1:Forall">
501 <quantifiedVariables name="p0">
502 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
503 </quantifiedVariables>
504 <quantifiedVariables name="p1">
505 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
506 </quantifiedVariables>
507 <expression xsi:type="language_1:Not">
508 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15">
509 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.19/@value/@quantifiedVariables.0"/>
510 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.19/@value/@quantifiedVariables.1"/>
511 </operand>
512 </expression>
513 </value>
514 </assertions>
497 <relations xsi:type="language_1:RelationDeclaration" name="interface reference FunctionalElement"> 515 <relations xsi:type="language_1:RelationDeclaration" name="interface reference FunctionalElement">
498 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/> 516 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
499 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/> 517 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
@@ -554,10 +572,53 @@
554 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/> 572 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
555 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/> 573 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
556 </relations> 574 </relations>
575 <relations xsi:type="language_1:RelationDefinition" name="pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation" annotations="//@annotations.19">
576 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
577 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
578 <variables name="parameter T">
579 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
580 </variables>
581 <variables name="parameter I">
582 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
583 </variables>
584 <value xsi:type="language_1:Or">
585 <operands xsi:type="language_1:Exists">
586 <quantifiedVariables name="variable Out">
587 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
588 </quantifiedVariables>
589 <expression xsi:type="language_1:And">
590 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11">
591 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.0/@quantifiedVariables.0"/>
592 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.1"/>
593 </operands>
594 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12">
595 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.0/@quantifiedVariables.0"/>
596 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.0"/>
597 </operands>
598 </expression>
599 </operands>
600 <operands xsi:type="language_1:Exists">
601 <quantifiedVariables name="variable In">
602 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
603 </quantifiedVariables>
604 <expression xsi:type="language_1:And">
605 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
606 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.1"/>
607 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.1/@quantifiedVariables.0"/>
608 </operands>
609 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12">
610 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.1/@quantifiedVariables.0"/>
611 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.0"/>
612 </operands>
613 </expression>
614 </operands>
615 </value>
616 </relations>
557 <elements name="Root literal FunctionType" definedInType="//@types.9"/> 617 <elements name="Root literal FunctionType" definedInType="//@types.9"/>
558 <elements name="Intermediate literal FunctionType" definedInType="//@types.9"/> 618 <elements name="Intermediate literal FunctionType" definedInType="//@types.9"/>
559 <elements name="Leaf literal FunctionType" definedInType="//@types.9"/> 619 <elements name="Leaf literal FunctionType" definedInType="//@types.9"/>
560 <containmentHierarchies typesOrderedInHierarchy="//@types.5 //@types.4 //@types.0 //@types.3 //@types.1 //@types.6 //@types.2 //@types.7 //@types.8" containmentRelations="//@relations.0 //@relations.3 //@relations.4 //@relations.8 //@relations.11 //@relations.12"/> 620 <elements name="o 1" definedInType="//@types.10"/>
621 <containmentHierarchies typesOrderedInHierarchy="//@types.7 //@types.1 //@types.4 //@types.3 //@types.5 //@types.0 //@types.8 //@types.6 //@types.2 //@types.10 //@types.11" containmentRelations="//@relations.0 //@relations.3 //@relations.4 //@relations.8 //@relations.11 //@relations.12"/>
561 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.0" relation="//@relations.0" upper="1"/> 622 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.0" relation="//@relations.0" upper="1"/>
562 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.1" relation="//@relations.1" lower="1"/> 623 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.1" relation="//@relations.1" lower="1"/>
563 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.1" upper="1"/> 624 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.1" upper="1"/>
@@ -577,4 +638,6 @@
577 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.16" inverseA="//@relations.8" inverseB="//@relations.13"/> 638 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.16" inverseA="//@relations.8" inverseB="//@relations.13"/>
578 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.17" relation="//@relations.14" lower="1"/> 639 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.17" relation="//@relations.14" lower="1"/>
579 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.18" relation="//@relations.14" upper="1"/> 640 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.18" relation="//@relations.14" upper="1"/>
641 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.15" patternFullyQualifiedName="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.terminatorAndInformation"/>
642 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.19" query="//@annotations.19"/>
580</language:LogicProblem> 643</language:LogicProblem>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/init.partialmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/init.partialmodel
index 55020b90..3f2640d6 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 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<partialinterpretation:PartialInterpretation xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:partialinterpretation="http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" minNewElements="7" maxNewElements="7"> 2<partialinterpretation:PartialInterpretation xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:partialinterpretation="http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" minNewElements="6" maxNewElements="6">
3 <problem href="generation.logicproblem#/"/> 3 <problem href="generation.logicproblem#/"/>
4 <partialrelationinterpretation> 4 <partialrelationinterpretation>
5 <interpretationOf href="generation.logicproblem#//@relations.0"/> 5 <interpretationOf href="generation.logicproblem#//@relations.0"/>
@@ -86,6 +86,7 @@
86 <interpretationOf href="generation.logicproblem#//@types.0"/> 86 <interpretationOf href="generation.logicproblem#//@types.0"/>
87 </partialtypeinterpratation> 87 </partialtypeinterpratation>
88 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.1"> 88 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.1">
89 <elements href="generation.logicproblem#//@elements.3"/>
89 <interpretationOf href="generation.logicproblem#//@types.1"/> 90 <interpretationOf href="generation.logicproblem#//@types.1"/>
90 </partialtypeinterpratation> 91 </partialtypeinterpratation>
91 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.2" supertypeInterpretation="//@partialtypeinterpratation.4"> 92 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.2" supertypeInterpretation="//@partialtypeinterpratation.4">
@@ -109,6 +110,9 @@
109 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.8"> 110 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.8">
110 <interpretationOf href="generation.logicproblem#//@types.8"/> 111 <interpretationOf href="generation.logicproblem#//@types.8"/>
111 </partialtypeinterpratation> 112 </partialtypeinterpratation>
113 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.9" supertypeInterpretation="//@partialtypeinterpratation.5">
114 <interpretationOf href="generation.logicproblem#//@types.11"/>
115 </partialtypeinterpratation>
112 <openWorldElements xsi:type="partialinterpretation:IntegerElement" name="New Integers"/> 116 <openWorldElements xsi:type="partialinterpretation:IntegerElement" name="New Integers"/>
113 <openWorldElements xsi:type="partialinterpretation:RealElement" name="New Reals"/> 117 <openWorldElements xsi:type="partialinterpretation:RealElement" name="New Reals"/>
114 <openWorldElements xsi:type="partialinterpretation:StringElement" name="New Strings"/> 118 <openWorldElements xsi:type="partialinterpretation:StringElement" name="New Strings"/>
@@ -122,4 +126,5 @@
122 <scopes targetTypeInterpretation="//@partialtypeinterpratation.10"/> 126 <scopes targetTypeInterpretation="//@partialtypeinterpratation.10"/>
123 <scopes targetTypeInterpretation="//@partialtypeinterpratation.11"/> 127 <scopes targetTypeInterpretation="//@partialtypeinterpratation.11"/>
124 <scopes targetTypeInterpretation="//@partialtypeinterpratation.12"/> 128 <scopes targetTypeInterpretation="//@partialtypeinterpratation.12"/>
129 <scopes targetTypeInterpretation="//@partialtypeinterpratation.13"/>
125</partialinterpretation:PartialInterpretation> 130</partialinterpretation:PartialInterpretation>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt
index 7029fce0..6386e508 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 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 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!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 finished \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml
index 3e4dddc2..b0a86a61 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
@@ -8342,3 +8342,3357 @@ graph
8342 ] 8342 ]
8343 ] 8343 ]
8344] 8344]
8345graph
8346[
8347 node
8348 [
8349 id 0
8350 graphics
8351 [
8352 w 226.60000000000002
8353 h 40
8354 type "rectangle"
8355 fill "#FFFFFF"
8356 fill2 "#FFFFFF"
8357 outline "#000000"
8358 ]
8359 LabelGraphics
8360 [
8361 text "Root literal FunctionType"
8362 outline "#000000"
8363 fill "#FFFFFF"
8364 fontSize 16
8365 fontName "Monospace"
8366 autoSizePolicy "node_width"
8367 anchor "t"
8368 borderDistance 0.0
8369 ]
8370 LabelGraphics
8371 [
8372 text "
8373 FunctionType enum
8374 "
8375 fontSize 14
8376 fontName "Consolas"
8377 alignment "left"
8378 anchor "tl"
8379 borderDistance 6
8380 ]
8381 ]
8382
8383 node
8384 [
8385 id 1
8386 graphics
8387 [
8388 w 297.0
8389 h 40
8390 type "rectangle"
8391 fill "#FFFFFF"
8392 fill2 "#FFFFFF"
8393 outline "#000000"
8394 ]
8395 LabelGraphics
8396 [
8397 text "Intermediate literal FunctionType"
8398 outline "#000000"
8399 fill "#FFFFFF"
8400 fontSize 16
8401 fontName "Monospace"
8402 autoSizePolicy "node_width"
8403 anchor "t"
8404 borderDistance 0.0
8405 ]
8406 LabelGraphics
8407 [
8408 text "
8409 FunctionType enum
8410 "
8411 fontSize 14
8412 fontName "Consolas"
8413 alignment "left"
8414 anchor "tl"
8415 borderDistance 6
8416 ]
8417 ]
8418
8419 node
8420 [
8421 id 2
8422 graphics
8423 [
8424 w 226.60000000000002
8425 h 40
8426 type "rectangle"
8427 fill "#FFFFFF"
8428 fill2 "#FFFFFF"
8429 outline "#000000"
8430 ]
8431 LabelGraphics
8432 [
8433 text "Leaf literal FunctionType"
8434 outline "#000000"
8435 fill "#FFFFFF"
8436 fontSize 16
8437 fontName "Monospace"
8438 autoSizePolicy "node_width"
8439 anchor "t"
8440 borderDistance 0.0
8441 ]
8442 LabelGraphics
8443 [
8444 text "
8445 FunctionType enum
8446 "
8447 fontSize 14
8448 fontName "Consolas"
8449 alignment "left"
8450 anchor "tl"
8451 borderDistance 6
8452 ]
8453 ]
8454
8455 node
8456 [
8457 id 3
8458 graphics
8459 [
8460 w 41.800000000000004
8461 h 26
8462 type "rectangle"
8463 fill "#FFFFFF"
8464 fill2 "#FFFFFF"
8465 outline "#000000"
8466 ]
8467 LabelGraphics
8468 [
8469 text "true"
8470 outline "#000000"
8471 fill "#FFFFFF"
8472 fontSize 16
8473 fontName "Monospace"
8474 autoSizePolicy "node_width"
8475 anchor "t"
8476 borderDistance 0.0
8477 ]
8478 LabelGraphics
8479 [
8480 text "
8481 "
8482 fontSize 14
8483 fontName "Consolas"
8484 alignment "left"
8485 anchor "tl"
8486 borderDistance 6
8487 ]
8488 ]
8489
8490 node
8491 [
8492 id 4
8493 graphics
8494 [
8495 w 50.6
8496 h 26
8497 type "rectangle"
8498 fill "#FFFFFF"
8499 fill2 "#FFFFFF"
8500 outline "#000000"
8501 ]
8502 LabelGraphics
8503 [
8504 text "false"
8505 outline "#000000"
8506 fill "#FFFFFF"
8507 fontSize 16
8508 fontName "Monospace"
8509 autoSizePolicy "node_width"
8510 anchor "t"
8511 borderDistance 0.0
8512 ]
8513 LabelGraphics
8514 [
8515 text "
8516 "
8517 fontSize 14
8518 fontName "Consolas"
8519 alignment "left"
8520 anchor "tl"
8521 borderDistance 6
8522 ]
8523 ]
8524
8525 node
8526 [
8527 id 5
8528 graphics
8529 [
8530 w 207.9
8531 h 40
8532 type "rectangle"
8533 fill "#FFFFFF"
8534 fill2 "#FFFFFF"
8535 outline "#000000"
8536 ]
8537 LabelGraphics
8538 [
8539 text "null"
8540 outline "#000000"
8541 fill "#FFFFFF"
8542 fontSize 16
8543 fontName "Monospace"
8544 autoSizePolicy "node_width"
8545 anchor "t"
8546 borderDistance 0.0
8547 ]
8548 LabelGraphics
8549 [
8550 text "
8551 FunctionalInterface class
8552 "
8553 fontSize 14
8554 fontName "Consolas"
8555 alignment "left"
8556 anchor "tl"
8557 borderDistance 6
8558 ]
8559 ]
8560
8561 node
8562 [
8563 id 6
8564 graphics
8565 [
8566 w 184.8
8567 h 54
8568 type "rectangle"
8569 fill "#FFFFFF"
8570 fill2 "#FFFFFF"
8571 outline "#000000"
8572 ]
8573 LabelGraphics
8574 [
8575 text "null"
8576 outline "#000000"
8577 fill "#FFFFFF"
8578 fontSize 16
8579 fontName "Monospace"
8580 autoSizePolicy "node_width"
8581 anchor "t"
8582 borderDistance 0.0
8583 ]
8584 LabelGraphics
8585 [
8586 text "
8587 FunctionalOutput class
8588 FunctionalData class
8589 "
8590 fontSize 14
8591 fontName "Consolas"
8592 alignment "left"
8593 anchor "tl"
8594 borderDistance 6
8595 ]
8596 ]
8597
8598 node
8599 [
8600 id 7
8601 graphics
8602 [
8603 w 177.10000000000002
8604 h 54
8605 type "rectangle"
8606 fill "#FFFFFF"
8607 fill2 "#FFFFFF"
8608 outline "#000000"
8609 ]
8610 LabelGraphics
8611 [
8612 text "null"
8613 outline "#000000"
8614 fill "#FFFFFF"
8615 fontSize 16
8616 fontName "Monospace"
8617 autoSizePolicy "node_width"
8618 anchor "t"
8619 borderDistance 0.0
8620 ]
8621 LabelGraphics
8622 [
8623 text "
8624 FunctionalInput class
8625 FunctionalData class
8626 "
8627 fontSize 14
8628 fontName "Consolas"
8629 alignment "left"
8630 anchor "tl"
8631 borderDistance 6
8632 ]
8633 ]
8634
8635 node
8636 [
8637 id 8
8638 graphics
8639 [
8640 w 161.70000000000002
8641 h 40
8642 type "rectangle"
8643 fill "#FFFFFF"
8644 fill2 "#FFFFFF"
8645 outline "#000000"
8646 ]
8647 LabelGraphics
8648 [
8649 text "null"
8650 outline "#000000"
8651 fill "#FFFFFF"
8652 fontSize 16
8653 fontName "Monospace"
8654 autoSizePolicy "node_width"
8655 anchor "t"
8656 borderDistance 0.0
8657 ]
8658 LabelGraphics
8659 [
8660 text "
8661 FAMTerminator class
8662 "
8663 fontSize 14
8664 fontName "Consolas"
8665 alignment "left"
8666 anchor "tl"
8667 borderDistance 6
8668 ]
8669 ]
8670
8671 node
8672 [
8673 id 9
8674 graphics
8675 [
8676 w 184.8
8677 h 54
8678 type "rectangle"
8679 fill "#FFFFFF"
8680 fill2 "#FFFFFF"
8681 outline "#000000"
8682 ]
8683 LabelGraphics
8684 [
8685 text "null"
8686 outline "#000000"
8687 fill "#FFFFFF"
8688 fontSize 16
8689 fontName "Monospace"
8690 autoSizePolicy "node_width"
8691 anchor "t"
8692 borderDistance 0.0
8693 ]
8694 LabelGraphics
8695 [
8696 text "
8697 FunctionalOutput class
8698 FunctionalData class
8699 "
8700 fontSize 14
8701 fontName "Consolas"
8702 alignment "left"
8703 anchor "tl"
8704 borderDistance 6
8705 ]
8706 ]
8707
8708 node
8709 [
8710 id 10
8711 graphics
8712 [
8713 w 184.8
8714 h 54
8715 type "rectangle"
8716 fill "#FFFFFF"
8717 fill2 "#FFFFFF"
8718 outline "#000000"
8719 ]
8720 LabelGraphics
8721 [
8722 text "null"
8723 outline "#000000"
8724 fill "#FFFFFF"
8725 fontSize 16
8726 fontName "Monospace"
8727 autoSizePolicy "node_width"
8728 anchor "t"
8729 borderDistance 0.0
8730 ]
8731 LabelGraphics
8732 [
8733 text "
8734 FunctionalOutput class
8735 FunctionalData class
8736 "
8737 fontSize 14
8738 fontName "Consolas"
8739 alignment "left"
8740 anchor "tl"
8741 borderDistance 6
8742 ]
8743 ]
8744
8745 node
8746 [
8747 id 11
8748 graphics
8749 [
8750 w 161.70000000000002
8751 h 40
8752 type "rectangle"
8753 fill "#FFFFFF"
8754 fill2 "#FFFFFF"
8755 outline "#000000"
8756 ]
8757 LabelGraphics
8758 [
8759 text "null"
8760 outline "#000000"
8761 fill "#FFFFFF"
8762 fontSize 16
8763 fontName "Monospace"
8764 autoSizePolicy "node_width"
8765 anchor "t"
8766 borderDistance 0.0
8767 ]
8768 LabelGraphics
8769 [
8770 text "
8771 FAMTerminator class
8772 "
8773 fontSize 14
8774 fontName "Consolas"
8775 alignment "left"
8776 anchor "tl"
8777 borderDistance 6
8778 ]
8779 ]
8780
8781 node
8782 [
8783 id 12
8784 graphics
8785 [
8786 w 112.2
8787 h 26
8788 type "rectangle"
8789 fill "#FFFFFF"
8790 fill2 "#FFFFFF"
8791 outline "#000000"
8792 ]
8793 LabelGraphics
8794 [
8795 text "New Integers"
8796 outline "#000000"
8797 fill "#FFFFFF"
8798 fontSize 16
8799 fontName "Monospace"
8800 autoSizePolicy "node_width"
8801 anchor "t"
8802 borderDistance 0.0
8803 ]
8804 LabelGraphics
8805 [
8806 text "
8807 "
8808 fontSize 14
8809 fontName "Consolas"
8810 alignment "left"
8811 anchor "tl"
8812 borderDistance 6
8813 ]
8814 ]
8815
8816 node
8817 [
8818 id 13
8819 graphics
8820 [
8821 w 85.80000000000001
8822 h 26
8823 type "rectangle"
8824 fill "#FFFFFF"
8825 fill2 "#FFFFFF"
8826 outline "#000000"
8827 ]
8828 LabelGraphics
8829 [
8830 text "New Reals"
8831 outline "#000000"
8832 fill "#FFFFFF"
8833 fontSize 16
8834 fontName "Monospace"
8835 autoSizePolicy "node_width"
8836 anchor "t"
8837 borderDistance 0.0
8838 ]
8839 LabelGraphics
8840 [
8841 text "
8842 "
8843 fontSize 14
8844 fontName "Consolas"
8845 alignment "left"
8846 anchor "tl"
8847 borderDistance 6
8848 ]
8849 ]
8850
8851 node
8852 [
8853 id 14
8854 graphics
8855 [
8856 w 103.4
8857 h 26
8858 type "rectangle"
8859 fill "#FFFFFF"
8860 fill2 "#FFFFFF"
8861 outline "#000000"
8862 ]
8863 LabelGraphics
8864 [
8865 text "New Strings"
8866 outline "#000000"
8867 fill "#FFFFFF"
8868 fontSize 16
8869 fontName "Monospace"
8870 autoSizePolicy "node_width"
8871 anchor "t"
8872 borderDistance 0.0
8873 ]
8874 LabelGraphics
8875 [
8876 text "
8877 "
8878 fontSize 14
8879 fontName "Consolas"
8880 alignment "left"
8881 anchor "tl"
8882 borderDistance 6
8883 ]
8884 ]
8885
8886 node
8887 [
8888 id 15
8889 graphics
8890 [
8891 w 103.4
8892 h 26
8893 type "rectangle"
8894 fill "#FFFFFF"
8895 fill2 "#FFFFFF"
8896 outline "#000000"
8897 ]
8898 LabelGraphics
8899 [
8900 text "New Objects"
8901 outline "#000000"
8902 fill "#FFFFFF"
8903 fontSize 16
8904 fontName "Monospace"
8905 autoSizePolicy "node_width"
8906 anchor "t"
8907 borderDistance 0.0
8908 ]
8909 LabelGraphics
8910 [
8911 text "
8912 "
8913 fontSize 14
8914 fontName "Consolas"
8915 alignment "left"
8916 anchor "tl"
8917 borderDistance 6
8918 ]
8919 ]
8920 edge
8921 [
8922 source 8
8923 target 6
8924 graphics
8925 [
8926 fill "#000000"
8927 targetArrow "standard"
8928 ]
8929 LabelGraphics
8930 [
8931 text "data reference FAMTerminator"
8932 fontSize 14
8933 fontName "Consolas"
8934 configuration "AutoFlippingLabel"
8935 model "six_pos"
8936 position "thead"
8937 ]
8938 ]
8939 edge
8940 [
8941 source 11
8942 target 7
8943 graphics
8944 [
8945 fill "#000000"
8946 targetArrow "standard"
8947 ]
8948 LabelGraphics
8949 [
8950 text "data reference FAMTerminator"
8951 fontSize 14
8952 fontName "Consolas"
8953 configuration "AutoFlippingLabel"
8954 model "six_pos"
8955 position "thead"
8956 ]
8957 ]
8958 edge
8959 [
8960 source 5
8961 target 6
8962 graphics
8963 [
8964 fill "#000000"
8965 width 3
8966 targetArrow "standard"
8967 ]
8968 LabelGraphics
8969 [
8970 text "data reference FunctionalInterface"
8971 fontSize 14
8972 fontName "Consolas"
8973 configuration "AutoFlippingLabel"
8974 model "six_pos"
8975 position "thead"
8976 ]
8977 ]
8978 edge
8979 [
8980 source 5
8981 target 7
8982 graphics
8983 [
8984 fill "#000000"
8985 width 3
8986 targetArrow "standard"
8987 ]
8988 LabelGraphics
8989 [
8990 text "data reference FunctionalInterface"
8991 fontSize 14
8992 fontName "Consolas"
8993 configuration "AutoFlippingLabel"
8994 model "six_pos"
8995 position "thead"
8996 ]
8997 ]
8998 edge
8999 [
9000 source 5
9001 target 9
9002 graphics
9003 [
9004 fill "#000000"
9005 width 3
9006 targetArrow "standard"
9007 ]
9008 LabelGraphics
9009 [
9010 text "data reference FunctionalInterface"
9011 fontSize 14
9012 fontName "Consolas"
9013 configuration "AutoFlippingLabel"
9014 model "six_pos"
9015 position "thead"
9016 ]
9017 ]
9018 edge
9019 [
9020 source 5
9021 target 10
9022 graphics
9023 [
9024 fill "#000000"
9025 width 3
9026 targetArrow "standard"
9027 ]
9028 LabelGraphics
9029 [
9030 text "data reference FunctionalInterface"
9031 fontSize 14
9032 fontName "Consolas"
9033 configuration "AutoFlippingLabel"
9034 model "six_pos"
9035 position "thead"
9036 ]
9037 ]
9038 edge
9039 [
9040 source 6
9041 target 8
9042 graphics
9043 [
9044 fill "#000000"
9045 width 3
9046 targetArrow "standard"
9047 ]
9048 LabelGraphics
9049 [
9050 text "terminator reference FunctionalData"
9051 fontSize 14
9052 fontName "Consolas"
9053 configuration "AutoFlippingLabel"
9054 model "six_pos"
9055 position "thead"
9056 ]
9057 ]
9058 edge
9059 [
9060 source 7
9061 target 11
9062 graphics
9063 [
9064 fill "#000000"
9065 width 3
9066 targetArrow "standard"
9067 ]
9068 LabelGraphics
9069 [
9070 text "terminator reference FunctionalData"
9071 fontSize 14
9072 fontName "Consolas"
9073 configuration "AutoFlippingLabel"
9074 model "six_pos"
9075 position "thead"
9076 ]
9077 ]
9078 edge
9079 [
9080 source 6
9081 target 5
9082 graphics
9083 [
9084 fill "#000000"
9085 targetArrow "standard"
9086 ]
9087 LabelGraphics
9088 [
9089 text "interface reference FunctionalData"
9090 fontSize 14
9091 fontName "Consolas"
9092 configuration "AutoFlippingLabel"
9093 model "six_pos"
9094 position "thead"
9095 ]
9096 ]
9097 edge
9098 [
9099 source 7
9100 target 5
9101 graphics
9102 [
9103 fill "#000000"
9104 targetArrow "standard"
9105 ]
9106 LabelGraphics
9107 [
9108 text "interface reference FunctionalData"
9109 fontSize 14
9110 fontName "Consolas"
9111 configuration "AutoFlippingLabel"
9112 model "six_pos"
9113 position "thead"
9114 ]
9115 ]
9116 edge
9117 [
9118 source 9
9119 target 5
9120 graphics
9121 [
9122 fill "#000000"
9123 targetArrow "standard"
9124 ]
9125 LabelGraphics
9126 [
9127 text "interface reference FunctionalData"
9128 fontSize 14
9129 fontName "Consolas"
9130 configuration "AutoFlippingLabel"
9131 model "six_pos"
9132 position "thead"
9133 ]
9134 ]
9135 edge
9136 [
9137 source 10
9138 target 5
9139 graphics
9140 [
9141 fill "#000000"
9142 targetArrow "standard"
9143 ]
9144 LabelGraphics
9145 [
9146 text "interface reference FunctionalData"
9147 fontSize 14
9148 fontName "Consolas"
9149 configuration "AutoFlippingLabel"
9150 model "six_pos"
9151 position "thead"
9152 ]
9153 ]
9154]
9155graph
9156[
9157 node
9158 [
9159 id 0
9160 graphics
9161 [
9162 w 226.60000000000002
9163 h 40
9164 type "rectangle"
9165 fill "#FFFFFF"
9166 fill2 "#FFFFFF"
9167 outline "#000000"
9168 ]
9169 LabelGraphics
9170 [
9171 text "Root literal FunctionType"
9172 outline "#000000"
9173 fill "#FFFFFF"
9174 fontSize 16
9175 fontName "Monospace"
9176 autoSizePolicy "node_width"
9177 anchor "t"
9178 borderDistance 0.0
9179 ]
9180 LabelGraphics
9181 [
9182 text "
9183 FunctionType enum
9184 "
9185 fontSize 14
9186 fontName "Consolas"
9187 alignment "left"
9188 anchor "tl"
9189 borderDistance 6
9190 ]
9191 ]
9192
9193 node
9194 [
9195 id 1
9196 graphics
9197 [
9198 w 297.0
9199 h 40
9200 type "rectangle"
9201 fill "#FFFFFF"
9202 fill2 "#FFFFFF"
9203 outline "#000000"
9204 ]
9205 LabelGraphics
9206 [
9207 text "Intermediate literal FunctionType"
9208 outline "#000000"
9209 fill "#FFFFFF"
9210 fontSize 16
9211 fontName "Monospace"
9212 autoSizePolicy "node_width"
9213 anchor "t"
9214 borderDistance 0.0
9215 ]
9216 LabelGraphics
9217 [
9218 text "
9219 FunctionType enum
9220 "
9221 fontSize 14
9222 fontName "Consolas"
9223 alignment "left"
9224 anchor "tl"
9225 borderDistance 6
9226 ]
9227 ]
9228
9229 node
9230 [
9231 id 2
9232 graphics
9233 [
9234 w 226.60000000000002
9235 h 40
9236 type "rectangle"
9237 fill "#FFFFFF"
9238 fill2 "#FFFFFF"
9239 outline "#000000"
9240 ]
9241 LabelGraphics
9242 [
9243 text "Leaf literal FunctionType"
9244 outline "#000000"
9245 fill "#FFFFFF"
9246 fontSize 16
9247 fontName "Monospace"
9248 autoSizePolicy "node_width"
9249 anchor "t"
9250 borderDistance 0.0
9251 ]
9252 LabelGraphics
9253 [
9254 text "
9255 FunctionType enum
9256 "
9257 fontSize 14
9258 fontName "Consolas"
9259 alignment "left"
9260 anchor "tl"
9261 borderDistance 6
9262 ]
9263 ]
9264
9265 node
9266 [
9267 id 3
9268 graphics
9269 [
9270 w 41.800000000000004
9271 h 26
9272 type "rectangle"
9273 fill "#FFFFFF"
9274 fill2 "#FFFFFF"
9275 outline "#000000"
9276 ]
9277 LabelGraphics
9278 [
9279 text "true"
9280 outline "#000000"
9281 fill "#FFFFFF"
9282 fontSize 16
9283 fontName "Monospace"
9284 autoSizePolicy "node_width"
9285 anchor "t"
9286 borderDistance 0.0
9287 ]
9288 LabelGraphics
9289 [
9290 text "
9291 "
9292 fontSize 14
9293 fontName "Consolas"
9294 alignment "left"
9295 anchor "tl"
9296 borderDistance 6
9297 ]
9298 ]
9299
9300 node
9301 [
9302 id 4
9303 graphics
9304 [
9305 w 50.6
9306 h 26
9307 type "rectangle"
9308 fill "#FFFFFF"
9309 fill2 "#FFFFFF"
9310 outline "#000000"
9311 ]
9312 LabelGraphics
9313 [
9314 text "false"
9315 outline "#000000"
9316 fill "#FFFFFF"
9317 fontSize 16
9318 fontName "Monospace"
9319 autoSizePolicy "node_width"
9320 anchor "t"
9321 borderDistance 0.0
9322 ]
9323 LabelGraphics
9324 [
9325 text "
9326 "
9327 fontSize 14
9328 fontName "Consolas"
9329 alignment "left"
9330 anchor "tl"
9331 borderDistance 6
9332 ]
9333 ]
9334
9335 node
9336 [
9337 id 5
9338 graphics
9339 [
9340 w 207.9
9341 h 40
9342 type "rectangle"
9343 fill "#FFFFFF"
9344 fill2 "#FFFFFF"
9345 outline "#000000"
9346 ]
9347 LabelGraphics
9348 [
9349 text "null"
9350 outline "#000000"
9351 fill "#FFFFFF"
9352 fontSize 16
9353 fontName "Monospace"
9354 autoSizePolicy "node_width"
9355 anchor "t"
9356 borderDistance 0.0
9357 ]
9358 LabelGraphics
9359 [
9360 text "
9361 FunctionalInterface class
9362 "
9363 fontSize 14
9364 fontName "Consolas"
9365 alignment "left"
9366 anchor "tl"
9367 borderDistance 6
9368 ]
9369 ]
9370
9371 node
9372 [
9373 id 6
9374 graphics
9375 [
9376 w 177.10000000000002
9377 h 54
9378 type "rectangle"
9379 fill "#FFFFFF"
9380 fill2 "#FFFFFF"
9381 outline "#000000"
9382 ]
9383 LabelGraphics
9384 [
9385 text "null"
9386 outline "#000000"
9387 fill "#FFFFFF"
9388 fontSize 16
9389 fontName "Monospace"
9390 autoSizePolicy "node_width"
9391 anchor "t"
9392 borderDistance 0.0
9393 ]
9394 LabelGraphics
9395 [
9396 text "
9397 FunctionalInput class
9398 FunctionalData class
9399 "
9400 fontSize 14
9401 fontName "Consolas"
9402 alignment "left"
9403 anchor "tl"
9404 borderDistance 6
9405 ]
9406 ]
9407
9408 node
9409 [
9410 id 7
9411 graphics
9412 [
9413 w 177.10000000000002
9414 h 54
9415 type "rectangle"
9416 fill "#FFFFFF"
9417 fill2 "#FFFFFF"
9418 outline "#000000"
9419 ]
9420 LabelGraphics
9421 [
9422 text "null"
9423 outline "#000000"
9424 fill "#FFFFFF"
9425 fontSize 16
9426 fontName "Monospace"
9427 autoSizePolicy "node_width"
9428 anchor "t"
9429 borderDistance 0.0
9430 ]
9431 LabelGraphics
9432 [
9433 text "
9434 FunctionalInput class
9435 FunctionalData class
9436 "
9437 fontSize 14
9438 fontName "Consolas"
9439 alignment "left"
9440 anchor "tl"
9441 borderDistance 6
9442 ]
9443 ]
9444
9445 node
9446 [
9447 id 8
9448 graphics
9449 [
9450 w 177.10000000000002
9451 h 54
9452 type "rectangle"
9453 fill "#FFFFFF"
9454 fill2 "#FFFFFF"
9455 outline "#000000"
9456 ]
9457 LabelGraphics
9458 [
9459 text "null"
9460 outline "#000000"
9461 fill "#FFFFFF"
9462 fontSize 16
9463 fontName "Monospace"
9464 autoSizePolicy "node_width"
9465 anchor "t"
9466 borderDistance 0.0
9467 ]
9468 LabelGraphics
9469 [
9470 text "
9471 FunctionalInput class
9472 FunctionalData class
9473 "
9474 fontSize 14
9475 fontName "Consolas"
9476 alignment "left"
9477 anchor "tl"
9478 borderDistance 6
9479 ]
9480 ]
9481
9482 node
9483 [
9484 id 9
9485 graphics
9486 [
9487 w 161.70000000000002
9488 h 40
9489 type "rectangle"
9490 fill "#FFFFFF"
9491 fill2 "#FFFFFF"
9492 outline "#000000"
9493 ]
9494 LabelGraphics
9495 [
9496 text "null"
9497 outline "#000000"
9498 fill "#FFFFFF"
9499 fontSize 16
9500 fontName "Monospace"
9501 autoSizePolicy "node_width"
9502 anchor "t"
9503 borderDistance 0.0
9504 ]
9505 LabelGraphics
9506 [
9507 text "
9508 FAMTerminator class
9509 "
9510 fontSize 14
9511 fontName "Consolas"
9512 alignment "left"
9513 anchor "tl"
9514 borderDistance 6
9515 ]
9516 ]
9517
9518 node
9519 [
9520 id 10
9521 graphics
9522 [
9523 w 161.70000000000002
9524 h 40
9525 type "rectangle"
9526 fill "#FFFFFF"
9527 fill2 "#FFFFFF"
9528 outline "#000000"
9529 ]
9530 LabelGraphics
9531 [
9532 text "null"
9533 outline "#000000"
9534 fill "#FFFFFF"
9535 fontSize 16
9536 fontName "Monospace"
9537 autoSizePolicy "node_width"
9538 anchor "t"
9539 borderDistance 0.0
9540 ]
9541 LabelGraphics
9542 [
9543 text "
9544 FAMTerminator class
9545 "
9546 fontSize 14
9547 fontName "Consolas"
9548 alignment "left"
9549 anchor "tl"
9550 borderDistance 6
9551 ]
9552 ]
9553
9554 node
9555 [
9556 id 11
9557 graphics
9558 [
9559 w 184.8
9560 h 54
9561 type "rectangle"
9562 fill "#FFFFFF"
9563 fill2 "#FFFFFF"
9564 outline "#000000"
9565 ]
9566 LabelGraphics
9567 [
9568 text "null"
9569 outline "#000000"
9570 fill "#FFFFFF"
9571 fontSize 16
9572 fontName "Monospace"
9573 autoSizePolicy "node_width"
9574 anchor "t"
9575 borderDistance 0.0
9576 ]
9577 LabelGraphics
9578 [
9579 text "
9580 FunctionalOutput class
9581 FunctionalData class
9582 "
9583 fontSize 14
9584 fontName "Consolas"
9585 alignment "left"
9586 anchor "tl"
9587 borderDistance 6
9588 ]
9589 ]
9590
9591 node
9592 [
9593 id 12
9594 graphics
9595 [
9596 w 112.2
9597 h 26
9598 type "rectangle"
9599 fill "#FFFFFF"
9600 fill2 "#FFFFFF"
9601 outline "#000000"
9602 ]
9603 LabelGraphics
9604 [
9605 text "New Integers"
9606 outline "#000000"
9607 fill "#FFFFFF"
9608 fontSize 16
9609 fontName "Monospace"
9610 autoSizePolicy "node_width"
9611 anchor "t"
9612 borderDistance 0.0
9613 ]
9614 LabelGraphics
9615 [
9616 text "
9617 "
9618 fontSize 14
9619 fontName "Consolas"
9620 alignment "left"
9621 anchor "tl"
9622 borderDistance 6
9623 ]
9624 ]
9625
9626 node
9627 [
9628 id 13
9629 graphics
9630 [
9631 w 85.80000000000001
9632 h 26
9633 type "rectangle"
9634 fill "#FFFFFF"
9635 fill2 "#FFFFFF"
9636 outline "#000000"
9637 ]
9638 LabelGraphics
9639 [
9640 text "New Reals"
9641 outline "#000000"
9642 fill "#FFFFFF"
9643 fontSize 16
9644 fontName "Monospace"
9645 autoSizePolicy "node_width"
9646 anchor "t"
9647 borderDistance 0.0
9648 ]
9649 LabelGraphics
9650 [
9651 text "
9652 "
9653 fontSize 14
9654 fontName "Consolas"
9655 alignment "left"
9656 anchor "tl"
9657 borderDistance 6
9658 ]
9659 ]
9660
9661 node
9662 [
9663 id 14
9664 graphics
9665 [
9666 w 103.4
9667 h 26
9668 type "rectangle"
9669 fill "#FFFFFF"
9670 fill2 "#FFFFFF"
9671 outline "#000000"
9672 ]
9673 LabelGraphics
9674 [
9675 text "New Strings"
9676 outline "#000000"
9677 fill "#FFFFFF"
9678 fontSize 16
9679 fontName "Monospace"
9680 autoSizePolicy "node_width"
9681 anchor "t"
9682 borderDistance 0.0
9683 ]
9684 LabelGraphics
9685 [
9686 text "
9687 "
9688 fontSize 14
9689 fontName "Consolas"
9690 alignment "left"
9691 anchor "tl"
9692 borderDistance 6
9693 ]
9694 ]
9695
9696 node
9697 [
9698 id 15
9699 graphics
9700 [
9701 w 103.4
9702 h 26
9703 type "rectangle"
9704 fill "#FFFFFF"
9705 fill2 "#FFFFFF"
9706 outline "#000000"
9707 ]
9708 LabelGraphics
9709 [
9710 text "New Objects"
9711 outline "#000000"
9712 fill "#FFFFFF"
9713 fontSize 16
9714 fontName "Monospace"
9715 autoSizePolicy "node_width"
9716 anchor "t"
9717 borderDistance 0.0
9718 ]
9719 LabelGraphics
9720 [
9721 text "
9722 "
9723 fontSize 14
9724 fontName "Consolas"
9725 alignment "left"
9726 anchor "tl"
9727 borderDistance 6
9728 ]
9729 ]
9730 edge
9731 [
9732 source 9
9733 target 8
9734 graphics
9735 [
9736 fill "#000000"
9737 targetArrow "standard"
9738 ]
9739 LabelGraphics
9740 [
9741 text "data reference FAMTerminator"
9742 fontSize 14
9743 fontName "Consolas"
9744 configuration "AutoFlippingLabel"
9745 model "six_pos"
9746 position "thead"
9747 ]
9748 ]
9749 edge
9750 [
9751 source 10
9752 target 6
9753 graphics
9754 [
9755 fill "#000000"
9756 targetArrow "standard"
9757 ]
9758 LabelGraphics
9759 [
9760 text "data reference FAMTerminator"
9761 fontSize 14
9762 fontName "Consolas"
9763 configuration "AutoFlippingLabel"
9764 model "six_pos"
9765 position "thead"
9766 ]
9767 ]
9768 edge
9769 [
9770 source 5
9771 target 6
9772 graphics
9773 [
9774 fill "#000000"
9775 width 3
9776 targetArrow "standard"
9777 ]
9778 LabelGraphics
9779 [
9780 text "data reference FunctionalInterface"
9781 fontSize 14
9782 fontName "Consolas"
9783 configuration "AutoFlippingLabel"
9784 model "six_pos"
9785 position "thead"
9786 ]
9787 ]
9788 edge
9789 [
9790 source 5
9791 target 7
9792 graphics
9793 [
9794 fill "#000000"
9795 width 3
9796 targetArrow "standard"
9797 ]
9798 LabelGraphics
9799 [
9800 text "data reference FunctionalInterface"
9801 fontSize 14
9802 fontName "Consolas"
9803 configuration "AutoFlippingLabel"
9804 model "six_pos"
9805 position "thead"
9806 ]
9807 ]
9808 edge
9809 [
9810 source 5
9811 target 8
9812 graphics
9813 [
9814 fill "#000000"
9815 width 3
9816 targetArrow "standard"
9817 ]
9818 LabelGraphics
9819 [
9820 text "data reference FunctionalInterface"
9821 fontSize 14
9822 fontName "Consolas"
9823 configuration "AutoFlippingLabel"
9824 model "six_pos"
9825 position "thead"
9826 ]
9827 ]
9828 edge
9829 [
9830 source 5
9831 target 11
9832 graphics
9833 [
9834 fill "#000000"
9835 width 3
9836 targetArrow "standard"
9837 ]
9838 LabelGraphics
9839 [
9840 text "data reference FunctionalInterface"
9841 fontSize 14
9842 fontName "Consolas"
9843 configuration "AutoFlippingLabel"
9844 model "six_pos"
9845 position "thead"
9846 ]
9847 ]
9848 edge
9849 [
9850 source 8
9851 target 9
9852 graphics
9853 [
9854 fill "#000000"
9855 width 3
9856 targetArrow "standard"
9857 ]
9858 LabelGraphics
9859 [
9860 text "terminator reference FunctionalData"
9861 fontSize 14
9862 fontName "Consolas"
9863 configuration "AutoFlippingLabel"
9864 model "six_pos"
9865 position "thead"
9866 ]
9867 ]
9868 edge
9869 [
9870 source 6
9871 target 10
9872 graphics
9873 [
9874 fill "#000000"
9875 width 3
9876 targetArrow "standard"
9877 ]
9878 LabelGraphics
9879 [
9880 text "terminator reference FunctionalData"
9881 fontSize 14
9882 fontName "Consolas"
9883 configuration "AutoFlippingLabel"
9884 model "six_pos"
9885 position "thead"
9886 ]
9887 ]
9888 edge
9889 [
9890 source 6
9891 target 5
9892 graphics
9893 [
9894 fill "#000000"
9895 targetArrow "standard"
9896 ]
9897 LabelGraphics
9898 [
9899 text "interface reference FunctionalData"
9900 fontSize 14
9901 fontName "Consolas"
9902 configuration "AutoFlippingLabel"
9903 model "six_pos"
9904 position "thead"
9905 ]
9906 ]
9907 edge
9908 [
9909 source 7
9910 target 5
9911 graphics
9912 [
9913 fill "#000000"
9914 targetArrow "standard"
9915 ]
9916 LabelGraphics
9917 [
9918 text "interface reference FunctionalData"
9919 fontSize 14
9920 fontName "Consolas"
9921 configuration "AutoFlippingLabel"
9922 model "six_pos"
9923 position "thead"
9924 ]
9925 ]
9926 edge
9927 [
9928 source 8
9929 target 5
9930 graphics
9931 [
9932 fill "#000000"
9933 targetArrow "standard"
9934 ]
9935 LabelGraphics
9936 [
9937 text "interface reference FunctionalData"
9938 fontSize 14
9939 fontName "Consolas"
9940 configuration "AutoFlippingLabel"
9941 model "six_pos"
9942 position "thead"
9943 ]
9944 ]
9945 edge
9946 [
9947 source 11
9948 target 5
9949 graphics
9950 [
9951 fill "#000000"
9952 targetArrow "standard"
9953 ]
9954 LabelGraphics
9955 [
9956 text "interface reference FunctionalData"
9957 fontSize 14
9958 fontName "Consolas"
9959 configuration "AutoFlippingLabel"
9960 model "six_pos"
9961 position "thead"
9962 ]
9963 ]
9964]
9965graph
9966[
9967 node
9968 [
9969 id 0
9970 graphics
9971 [
9972 w 226.60000000000002
9973 h 40
9974 type "rectangle"
9975 fill "#FFFFFF"
9976 fill2 "#FFFFFF"
9977 outline "#000000"
9978 ]
9979 LabelGraphics
9980 [
9981 text "Root literal FunctionType"
9982 outline "#000000"
9983 fill "#FFFFFF"
9984 fontSize 16
9985 fontName "Monospace"
9986 autoSizePolicy "node_width"
9987 anchor "t"
9988 borderDistance 0.0
9989 ]
9990 LabelGraphics
9991 [
9992 text "
9993 FunctionType enum
9994 "
9995 fontSize 14
9996 fontName "Consolas"
9997 alignment "left"
9998 anchor "tl"
9999 borderDistance 6
10000 ]
10001 ]
10002
10003 node
10004 [
10005 id 1
10006 graphics
10007 [
10008 w 297.0
10009 h 40
10010 type "rectangle"
10011 fill "#FFFFFF"
10012 fill2 "#FFFFFF"
10013 outline "#000000"
10014 ]
10015 LabelGraphics
10016 [
10017 text "Intermediate literal FunctionType"
10018 outline "#000000"
10019 fill "#FFFFFF"
10020 fontSize 16
10021 fontName "Monospace"
10022 autoSizePolicy "node_width"
10023 anchor "t"
10024 borderDistance 0.0
10025 ]
10026 LabelGraphics
10027 [
10028 text "
10029 FunctionType enum
10030 "
10031 fontSize 14
10032 fontName "Consolas"
10033 alignment "left"
10034 anchor "tl"
10035 borderDistance 6
10036 ]
10037 ]
10038
10039 node
10040 [
10041 id 2
10042 graphics
10043 [
10044 w 226.60000000000002
10045 h 40
10046 type "rectangle"
10047 fill "#FFFFFF"
10048 fill2 "#FFFFFF"
10049 outline "#000000"
10050 ]
10051 LabelGraphics
10052 [
10053 text "Leaf literal FunctionType"
10054 outline "#000000"
10055 fill "#FFFFFF"
10056 fontSize 16
10057 fontName "Monospace"
10058 autoSizePolicy "node_width"
10059 anchor "t"
10060 borderDistance 0.0
10061 ]
10062 LabelGraphics
10063 [
10064 text "
10065 FunctionType enum
10066 "
10067 fontSize 14
10068 fontName "Consolas"
10069 alignment "left"
10070 anchor "tl"
10071 borderDistance 6
10072 ]
10073 ]
10074
10075 node
10076 [
10077 id 3
10078 graphics
10079 [
10080 w 361.90000000000003
10081 h 54
10082 type "rectangle"
10083 fill "#FFFFFF"
10084 fill2 "#FFFFFF"
10085 outline "#000000"
10086 ]
10087 LabelGraphics
10088 [
10089 text "o 1"
10090 outline "#000000"
10091 fill "#FFFFFF"
10092 fontSize 16
10093 fontName "Monospace"
10094 autoSizePolicy "node_width"
10095 anchor "t"
10096 borderDistance 0.0
10097 ]
10098 LabelGraphics
10099 [
10100 text "
10101 FunctionalArchitectureModel class DefinedPart
10102 FunctionalArchitectureModel class
10103 "
10104 fontSize 14
10105 fontName "Consolas"
10106 alignment "left"
10107 anchor "tl"
10108 borderDistance 6
10109 ]
10110 ]
10111
10112 node
10113 [
10114 id 4
10115 graphics
10116 [
10117 w 41.800000000000004
10118 h 26
10119 type "rectangle"
10120 fill "#FFFFFF"
10121 fill2 "#FFFFFF"
10122 outline "#000000"
10123 ]
10124 LabelGraphics
10125 [
10126 text "true"
10127 outline "#000000"
10128 fill "#FFFFFF"
10129 fontSize 16
10130 fontName "Monospace"
10131 autoSizePolicy "node_width"
10132 anchor "t"
10133 borderDistance 0.0
10134 ]
10135 LabelGraphics
10136 [
10137 text "
10138 "
10139 fontSize 14
10140 fontName "Consolas"
10141 alignment "left"
10142 anchor "tl"
10143 borderDistance 6
10144 ]
10145 ]
10146
10147 node
10148 [
10149 id 5
10150 graphics
10151 [
10152 w 50.6
10153 h 26
10154 type "rectangle"
10155 fill "#FFFFFF"
10156 fill2 "#FFFFFF"
10157 outline "#000000"
10158 ]
10159 LabelGraphics
10160 [
10161 text "false"
10162 outline "#000000"
10163 fill "#FFFFFF"
10164 fontSize 16
10165 fontName "Monospace"
10166 autoSizePolicy "node_width"
10167 anchor "t"
10168 borderDistance 0.0
10169 ]
10170 LabelGraphics
10171 [
10172 text "
10173 "
10174 fontSize 14
10175 fontName "Consolas"
10176 alignment "left"
10177 anchor "tl"
10178 borderDistance 6
10179 ]
10180 ]
10181
10182 node
10183 [
10184 id 6
10185 graphics
10186 [
10187 w 192.50000000000003
10188 h 54
10189 type "rectangle"
10190 fill "#FFFFFF"
10191 fill2 "#FFFFFF"
10192 outline "#000000"
10193 ]
10194 LabelGraphics
10195 [
10196 text "null"
10197 outline "#000000"
10198 fill "#FFFFFF"
10199 fontSize 16
10200 fontName "Monospace"
10201 autoSizePolicy "node_width"
10202 anchor "t"
10203 borderDistance 0.0
10204 ]
10205 LabelGraphics
10206 [
10207 text "
10208 FunctionalElement class
10209 Function class
10210 "
10211 fontSize 14
10212 fontName "Consolas"
10213 alignment "left"
10214 anchor "tl"
10215 borderDistance 6
10216 ]
10217 ]
10218
10219 node
10220 [
10221 id 7
10222 graphics
10223 [
10224 w 207.9
10225 h 40
10226 type "rectangle"
10227 fill "#FFFFFF"
10228 fill2 "#FFFFFF"
10229 outline "#000000"
10230 ]
10231 LabelGraphics
10232 [
10233 text "null"
10234 outline "#000000"
10235 fill "#FFFFFF"
10236 fontSize 16
10237 fontName "Monospace"
10238 autoSizePolicy "node_width"
10239 anchor "t"
10240 borderDistance 0.0
10241 ]
10242 LabelGraphics
10243 [
10244 text "
10245 FunctionalInterface class
10246 "
10247 fontSize 14
10248 fontName "Consolas"
10249 alignment "left"
10250 anchor "tl"
10251 borderDistance 6
10252 ]
10253 ]
10254
10255 node
10256 [
10257 id 8
10258 graphics
10259 [
10260 w 184.8
10261 h 54
10262 type "rectangle"
10263 fill "#FFFFFF"
10264 fill2 "#FFFFFF"
10265 outline "#000000"
10266 ]
10267 LabelGraphics
10268 [
10269 text "null"
10270 outline "#000000"
10271 fill "#FFFFFF"
10272 fontSize 16
10273 fontName "Monospace"
10274 autoSizePolicy "node_width"
10275 anchor "t"
10276 borderDistance 0.0
10277 ]
10278 LabelGraphics
10279 [
10280 text "
10281 FunctionalOutput class
10282 FunctionalData class
10283 "
10284 fontSize 14
10285 fontName "Consolas"
10286 alignment "left"
10287 anchor "tl"
10288 borderDistance 6
10289 ]
10290 ]
10291
10292 node
10293 [
10294 id 9
10295 graphics
10296 [
10297 w 177.10000000000002
10298 h 40
10299 type "rectangle"
10300 fill "#FFFFFF"
10301 fill2 "#FFFFFF"
10302 outline "#000000"
10303 ]
10304 LabelGraphics
10305 [
10306 text "null"
10307 outline "#000000"
10308 fill "#FFFFFF"
10309 fontSize 16
10310 fontName "Monospace"
10311 autoSizePolicy "node_width"
10312 anchor "t"
10313 borderDistance 0.0
10314 ]
10315 LabelGraphics
10316 [
10317 text "
10318 InformationLink class
10319 "
10320 fontSize 14
10321 fontName "Consolas"
10322 alignment "left"
10323 anchor "tl"
10324 borderDistance 6
10325 ]
10326 ]
10327
10328 node
10329 [
10330 id 10
10331 graphics
10332 [
10333 w 177.10000000000002
10334 h 54
10335 type "rectangle"
10336 fill "#FFFFFF"
10337 fill2 "#FFFFFF"
10338 outline "#000000"
10339 ]
10340 LabelGraphics
10341 [
10342 text "null"
10343 outline "#000000"
10344 fill "#FFFFFF"
10345 fontSize 16
10346 fontName "Monospace"
10347 autoSizePolicy "node_width"
10348 anchor "t"
10349 borderDistance 0.0
10350 ]
10351 LabelGraphics
10352 [
10353 text "
10354 FunctionalInput class
10355 FunctionalData class
10356 "
10357 fontSize 14
10358 fontName "Consolas"
10359 alignment "left"
10360 anchor "tl"
10361 borderDistance 6
10362 ]
10363 ]
10364
10365 node
10366 [
10367 id 11
10368 graphics
10369 [
10370 w 177.10000000000002
10371 h 40
10372 type "rectangle"
10373 fill "#FFFFFF"
10374 fill2 "#FFFFFF"
10375 outline "#000000"
10376 ]
10377 LabelGraphics
10378 [
10379 text "null"
10380 outline "#000000"
10381 fill "#FFFFFF"
10382 fontSize 16
10383 fontName "Monospace"
10384 autoSizePolicy "node_width"
10385 anchor "t"
10386 borderDistance 0.0
10387 ]
10388 LabelGraphics
10389 [
10390 text "
10391 InformationLink class
10392 "
10393 fontSize 14
10394 fontName "Consolas"
10395 alignment "left"
10396 anchor "tl"
10397 borderDistance 6
10398 ]
10399 ]
10400
10401 node
10402 [
10403 id 12
10404 graphics
10405 [
10406 w 112.2
10407 h 26
10408 type "rectangle"
10409 fill "#FFFFFF"
10410 fill2 "#FFFFFF"
10411 outline "#000000"
10412 ]
10413 LabelGraphics
10414 [
10415 text "New Integers"
10416 outline "#000000"
10417 fill "#FFFFFF"
10418 fontSize 16
10419 fontName "Monospace"
10420 autoSizePolicy "node_width"
10421 anchor "t"
10422 borderDistance 0.0
10423 ]
10424 LabelGraphics
10425 [
10426 text "
10427 "
10428 fontSize 14
10429 fontName "Consolas"
10430 alignment "left"
10431 anchor "tl"
10432 borderDistance 6
10433 ]
10434 ]
10435
10436 node
10437 [
10438 id 13
10439 graphics
10440 [
10441 w 85.80000000000001
10442 h 26
10443 type "rectangle"
10444 fill "#FFFFFF"
10445 fill2 "#FFFFFF"
10446 outline "#000000"
10447 ]
10448 LabelGraphics
10449 [
10450 text "New Reals"
10451 outline "#000000"
10452 fill "#FFFFFF"
10453 fontSize 16
10454 fontName "Monospace"
10455 autoSizePolicy "node_width"
10456 anchor "t"
10457 borderDistance 0.0
10458 ]
10459 LabelGraphics
10460 [
10461 text "
10462 "
10463 fontSize 14
10464 fontName "Consolas"
10465 alignment "left"
10466 anchor "tl"
10467 borderDistance 6
10468 ]
10469 ]
10470
10471 node
10472 [
10473 id 14
10474 graphics
10475 [
10476 w 103.4
10477 h 26
10478 type "rectangle"
10479 fill "#FFFFFF"
10480 fill2 "#FFFFFF"
10481 outline "#000000"
10482 ]
10483 LabelGraphics
10484 [
10485 text "New Strings"
10486 outline "#000000"
10487 fill "#FFFFFF"
10488 fontSize 16
10489 fontName "Monospace"
10490 autoSizePolicy "node_width"
10491 anchor "t"
10492 borderDistance 0.0
10493 ]
10494 LabelGraphics
10495 [
10496 text "
10497 "
10498 fontSize 14
10499 fontName "Consolas"
10500 alignment "left"
10501 anchor "tl"
10502 borderDistance 6
10503 ]
10504 ]
10505
10506 node
10507 [
10508 id 15
10509 graphics
10510 [
10511 w 103.4
10512 h 26
10513 type "rectangle"
10514 fill "#FFFFFF"
10515 fill2 "#FFFFFF"
10516 outline "#000000"
10517 ]
10518 LabelGraphics
10519 [
10520 text "New Objects"
10521 outline "#000000"
10522 fill "#FFFFFF"
10523 fontSize 16
10524 fontName "Monospace"
10525 autoSizePolicy "node_width"
10526 anchor "t"
10527 borderDistance 0.0
10528 ]
10529 LabelGraphics
10530 [
10531 text "
10532 "
10533 fontSize 14
10534 fontName "Consolas"
10535 alignment "left"
10536 anchor "tl"
10537 borderDistance 6
10538 ]
10539 ]
10540 edge
10541 [
10542 source 6
10543 target 7
10544 graphics
10545 [
10546 fill "#000000"
10547 width 3
10548 targetArrow "standard"
10549 ]
10550 LabelGraphics
10551 [
10552 text "interface reference FunctionalElement"
10553 fontSize 14
10554 fontName "Consolas"
10555 configuration "AutoFlippingLabel"
10556 model "six_pos"
10557 position "thead"
10558 ]
10559 ]
10560 edge
10561 [
10562 source 6
10563 target 3
10564 graphics
10565 [
10566 fill "#000000"
10567 targetArrow "standard"
10568 ]
10569 LabelGraphics
10570 [
10571 text "model reference FunctionalElement"
10572 fontSize 14
10573 fontName "Consolas"
10574 configuration "AutoFlippingLabel"
10575 model "six_pos"
10576 position "thead"
10577 ]
10578 ]
10579 edge
10580 [
10581 source 3
10582 target 6
10583 graphics
10584 [
10585 fill "#000000"
10586 width 3
10587 targetArrow "standard"
10588 ]
10589 LabelGraphics
10590 [
10591 text "rootElements reference FunctionalArchitectureModel"
10592 fontSize 14
10593 fontName "Consolas"
10594 configuration "AutoFlippingLabel"
10595 model "six_pos"
10596 position "thead"
10597 ]
10598 ]
10599 edge
10600 [
10601 source 9
10602 target 8
10603 graphics
10604 [
10605 fill "#000000"
10606 targetArrow "standard"
10607 ]
10608 LabelGraphics
10609 [
10610 text "from reference InformationLink"
10611 fontSize 14
10612 fontName "Consolas"
10613 configuration "AutoFlippingLabel"
10614 model "six_pos"
10615 position "thead"
10616 ]
10617 ]
10618 edge
10619 [
10620 source 11
10621 target 8
10622 graphics
10623 [
10624 fill "#000000"
10625 targetArrow "standard"
10626 ]
10627 LabelGraphics
10628 [
10629 text "from reference InformationLink"
10630 fontSize 14
10631 fontName "Consolas"
10632 configuration "AutoFlippingLabel"
10633 model "six_pos"
10634 position "thead"
10635 ]
10636 ]
10637 edge
10638 [
10639 source 9
10640 target 10
10641 graphics
10642 [
10643 fill "#000000"
10644 targetArrow "standard"
10645 ]
10646 LabelGraphics
10647 [
10648 text "to reference InformationLink"
10649 fontSize 14
10650 fontName "Consolas"
10651 configuration "AutoFlippingLabel"
10652 model "six_pos"
10653 position "thead"
10654 ]
10655 ]
10656 edge
10657 [
10658 source 11
10659 target 10
10660 graphics
10661 [
10662 fill "#000000"
10663 targetArrow "standard"
10664 ]
10665 LabelGraphics
10666 [
10667 text "to reference InformationLink"
10668 fontSize 14
10669 fontName "Consolas"
10670 configuration "AutoFlippingLabel"
10671 model "six_pos"
10672 position "thead"
10673 ]
10674 ]
10675 edge
10676 [
10677 source 7
10678 target 8
10679 graphics
10680 [
10681 fill "#000000"
10682 width 3
10683 targetArrow "standard"
10684 ]
10685 LabelGraphics
10686 [
10687 text "data reference FunctionalInterface"
10688 fontSize 14
10689 fontName "Consolas"
10690 configuration "AutoFlippingLabel"
10691 model "six_pos"
10692 position "thead"
10693 ]
10694 ]
10695 edge
10696 [
10697 source 7
10698 target 10
10699 graphics
10700 [
10701 fill "#000000"
10702 width 3
10703 targetArrow "standard"
10704 ]
10705 LabelGraphics
10706 [
10707 text "data reference FunctionalInterface"
10708 fontSize 14
10709 fontName "Consolas"
10710 configuration "AutoFlippingLabel"
10711 model "six_pos"
10712 position "thead"
10713 ]
10714 ]
10715 edge
10716 [
10717 source 7
10718 target 6
10719 graphics
10720 [
10721 fill "#000000"
10722 targetArrow "standard"
10723 ]
10724 LabelGraphics
10725 [
10726 text "element reference FunctionalInterface"
10727 fontSize 14
10728 fontName "Consolas"
10729 configuration "AutoFlippingLabel"
10730 model "six_pos"
10731 position "thead"
10732 ]
10733 ]
10734 edge
10735 [
10736 source 10
10737 target 9
10738 graphics
10739 [
10740 fill "#000000"
10741 targetArrow "standard"
10742 ]
10743 LabelGraphics
10744 [
10745 text "IncomingLinks reference FunctionalInput"
10746 fontSize 14
10747 fontName "Consolas"
10748 configuration "AutoFlippingLabel"
10749 model "six_pos"
10750 position "thead"
10751 ]
10752 ]
10753 edge
10754 [
10755 source 10
10756 target 11
10757 graphics
10758 [
10759 fill "#000000"
10760 targetArrow "standard"
10761 ]
10762 LabelGraphics
10763 [
10764 text "IncomingLinks reference FunctionalInput"
10765 fontSize 14
10766 fontName "Consolas"
10767 configuration "AutoFlippingLabel"
10768 model "six_pos"
10769 position "thead"
10770 ]
10771 ]
10772 edge
10773 [
10774 source 8
10775 target 9
10776 graphics
10777 [
10778 fill "#000000"
10779 width 3
10780 targetArrow "standard"
10781 ]
10782 LabelGraphics
10783 [
10784 text "outgoingLinks reference FunctionalOutput"
10785 fontSize 14
10786 fontName "Consolas"
10787 configuration "AutoFlippingLabel"
10788 model "six_pos"
10789 position "thead"
10790 ]
10791 ]
10792 edge
10793 [
10794 source 8
10795 target 11
10796 graphics
10797 [
10798 fill "#000000"
10799 width 3
10800 targetArrow "standard"
10801 ]
10802 LabelGraphics
10803 [
10804 text "outgoingLinks reference FunctionalOutput"
10805 fontSize 14
10806 fontName "Consolas"
10807 configuration "AutoFlippingLabel"
10808 model "six_pos"
10809 position "thead"
10810 ]
10811 ]
10812 edge
10813 [
10814 source 8
10815 target 7
10816 graphics
10817 [
10818 fill "#000000"
10819 targetArrow "standard"
10820 ]
10821 LabelGraphics
10822 [
10823 text "interface reference FunctionalData"
10824 fontSize 14
10825 fontName "Consolas"
10826 configuration "AutoFlippingLabel"
10827 model "six_pos"
10828 position "thead"
10829 ]
10830 ]
10831 edge
10832 [
10833 source 10
10834 target 7
10835 graphics
10836 [
10837 fill "#000000"
10838 targetArrow "standard"
10839 ]
10840 LabelGraphics
10841 [
10842 text "interface reference FunctionalData"
10843 fontSize 14
10844 fontName "Consolas"
10845 configuration "AutoFlippingLabel"
10846 model "six_pos"
10847 position "thead"
10848 ]
10849 ]
10850 edge
10851 [
10852 source 6
10853 target 0
10854 graphics
10855 [
10856 fill "#000000"
10857 targetArrow "standard"
10858 ]
10859 LabelGraphics
10860 [
10861 text "type attribute Function"
10862 fontSize 14
10863 fontName "Consolas"
10864 configuration "AutoFlippingLabel"
10865 model "six_pos"
10866 position "thead"
10867 ]
10868 ]
10869]
10870graph
10871[
10872 node
10873 [
10874 id 0
10875 graphics
10876 [
10877 w 226.60000000000002
10878 h 40
10879 type "rectangle"
10880 fill "#FFFFFF"
10881 fill2 "#FFFFFF"
10882 outline "#000000"
10883 ]
10884 LabelGraphics
10885 [
10886 text "Root literal FunctionType"
10887 outline "#000000"
10888 fill "#FFFFFF"
10889 fontSize 16
10890 fontName "Monospace"
10891 autoSizePolicy "node_width"
10892 anchor "t"
10893 borderDistance 0.0
10894 ]
10895 LabelGraphics
10896 [
10897 text "
10898 FunctionType enum
10899 "
10900 fontSize 14
10901 fontName "Consolas"
10902 alignment "left"
10903 anchor "tl"
10904 borderDistance 6
10905 ]
10906 ]
10907
10908 node
10909 [
10910 id 1
10911 graphics
10912 [
10913 w 297.0
10914 h 40
10915 type "rectangle"
10916 fill "#FFFFFF"
10917 fill2 "#FFFFFF"
10918 outline "#000000"
10919 ]
10920 LabelGraphics
10921 [
10922 text "Intermediate literal FunctionType"
10923 outline "#000000"
10924 fill "#FFFFFF"
10925 fontSize 16
10926 fontName "Monospace"
10927 autoSizePolicy "node_width"
10928 anchor "t"
10929 borderDistance 0.0
10930 ]
10931 LabelGraphics
10932 [
10933 text "
10934 FunctionType enum
10935 "
10936 fontSize 14
10937 fontName "Consolas"
10938 alignment "left"
10939 anchor "tl"
10940 borderDistance 6
10941 ]
10942 ]
10943
10944 node
10945 [
10946 id 2
10947 graphics
10948 [
10949 w 226.60000000000002
10950 h 40
10951 type "rectangle"
10952 fill "#FFFFFF"
10953 fill2 "#FFFFFF"
10954 outline "#000000"
10955 ]
10956 LabelGraphics
10957 [
10958 text "Leaf literal FunctionType"
10959 outline "#000000"
10960 fill "#FFFFFF"
10961 fontSize 16
10962 fontName "Monospace"
10963 autoSizePolicy "node_width"
10964 anchor "t"
10965 borderDistance 0.0
10966 ]
10967 LabelGraphics
10968 [
10969 text "
10970 FunctionType enum
10971 "
10972 fontSize 14
10973 fontName "Consolas"
10974 alignment "left"
10975 anchor "tl"
10976 borderDistance 6
10977 ]
10978 ]
10979
10980 node
10981 [
10982 id 3
10983 graphics
10984 [
10985 w 361.90000000000003
10986 h 54
10987 type "rectangle"
10988 fill "#FFFFFF"
10989 fill2 "#FFFFFF"
10990 outline "#000000"
10991 ]
10992 LabelGraphics
10993 [
10994 text "o 1"
10995 outline "#000000"
10996 fill "#FFFFFF"
10997 fontSize 16
10998 fontName "Monospace"
10999 autoSizePolicy "node_width"
11000 anchor "t"
11001 borderDistance 0.0
11002 ]
11003 LabelGraphics
11004 [
11005 text "
11006 FunctionalArchitectureModel class DefinedPart
11007 FunctionalArchitectureModel class
11008 "
11009 fontSize 14
11010 fontName "Consolas"
11011 alignment "left"
11012 anchor "tl"
11013 borderDistance 6
11014 ]
11015 ]
11016
11017 node
11018 [
11019 id 4
11020 graphics
11021 [
11022 w 41.800000000000004
11023 h 26
11024 type "rectangle"
11025 fill "#FFFFFF"
11026 fill2 "#FFFFFF"
11027 outline "#000000"
11028 ]
11029 LabelGraphics
11030 [
11031 text "true"
11032 outline "#000000"
11033 fill "#FFFFFF"
11034 fontSize 16
11035 fontName "Monospace"
11036 autoSizePolicy "node_width"
11037 anchor "t"
11038 borderDistance 0.0
11039 ]
11040 LabelGraphics
11041 [
11042 text "
11043 "
11044 fontSize 14
11045 fontName "Consolas"
11046 alignment "left"
11047 anchor "tl"
11048 borderDistance 6
11049 ]
11050 ]
11051
11052 node
11053 [
11054 id 5
11055 graphics
11056 [
11057 w 50.6
11058 h 26
11059 type "rectangle"
11060 fill "#FFFFFF"
11061 fill2 "#FFFFFF"
11062 outline "#000000"
11063 ]
11064 LabelGraphics
11065 [
11066 text "false"
11067 outline "#000000"
11068 fill "#FFFFFF"
11069 fontSize 16
11070 fontName "Monospace"
11071 autoSizePolicy "node_width"
11072 anchor "t"
11073 borderDistance 0.0
11074 ]
11075 LabelGraphics
11076 [
11077 text "
11078 "
11079 fontSize 14
11080 fontName "Consolas"
11081 alignment "left"
11082 anchor "tl"
11083 borderDistance 6
11084 ]
11085 ]
11086
11087 node
11088 [
11089 id 6
11090 graphics
11091 [
11092 w 192.50000000000003
11093 h 54
11094 type "rectangle"
11095 fill "#FFFFFF"
11096 fill2 "#FFFFFF"
11097 outline "#000000"
11098 ]
11099 LabelGraphics
11100 [
11101 text "null"
11102 outline "#000000"
11103 fill "#FFFFFF"
11104 fontSize 16
11105 fontName "Monospace"
11106 autoSizePolicy "node_width"
11107 anchor "t"
11108 borderDistance 0.0
11109 ]
11110 LabelGraphics
11111 [
11112 text "
11113 FunctionalElement class
11114 Function class
11115 "
11116 fontSize 14
11117 fontName "Consolas"
11118 alignment "left"
11119 anchor "tl"
11120 borderDistance 6
11121 ]
11122 ]
11123
11124 node
11125 [
11126 id 7
11127 graphics
11128 [
11129 w 207.9
11130 h 40
11131 type "rectangle"
11132 fill "#FFFFFF"
11133 fill2 "#FFFFFF"
11134 outline "#000000"
11135 ]
11136 LabelGraphics
11137 [
11138 text "null"
11139 outline "#000000"
11140 fill "#FFFFFF"
11141 fontSize 16
11142 fontName "Monospace"
11143 autoSizePolicy "node_width"
11144 anchor "t"
11145 borderDistance 0.0
11146 ]
11147 LabelGraphics
11148 [
11149 text "
11150 FunctionalInterface class
11151 "
11152 fontSize 14
11153 fontName "Consolas"
11154 alignment "left"
11155 anchor "tl"
11156 borderDistance 6
11157 ]
11158 ]
11159
11160 node
11161 [
11162 id 8
11163 graphics
11164 [
11165 w 184.8
11166 h 54
11167 type "rectangle"
11168 fill "#FFFFFF"
11169 fill2 "#FFFFFF"
11170 outline "#000000"
11171 ]
11172 LabelGraphics
11173 [
11174 text "null"
11175 outline "#000000"
11176 fill "#FFFFFF"
11177 fontSize 16
11178 fontName "Monospace"
11179 autoSizePolicy "node_width"
11180 anchor "t"
11181 borderDistance 0.0
11182 ]
11183 LabelGraphics
11184 [
11185 text "
11186 FunctionalOutput class
11187 FunctionalData class
11188 "
11189 fontSize 14
11190 fontName "Consolas"
11191 alignment "left"
11192 anchor "tl"
11193 borderDistance 6
11194 ]
11195 ]
11196
11197 node
11198 [
11199 id 9
11200 graphics
11201 [
11202 w 161.70000000000002
11203 h 40
11204 type "rectangle"
11205 fill "#FFFFFF"
11206 fill2 "#FFFFFF"
11207 outline "#000000"
11208 ]
11209 LabelGraphics
11210 [
11211 text "null"
11212 outline "#000000"
11213 fill "#FFFFFF"
11214 fontSize 16
11215 fontName "Monospace"
11216 autoSizePolicy "node_width"
11217 anchor "t"
11218 borderDistance 0.0
11219 ]
11220 LabelGraphics
11221 [
11222 text "
11223 FAMTerminator class
11224 "
11225 fontSize 14
11226 fontName "Consolas"
11227 alignment "left"
11228 anchor "tl"
11229 borderDistance 6
11230 ]
11231 ]
11232
11233 node
11234 [
11235 id 10
11236 graphics
11237 [
11238 w 184.8
11239 h 54
11240 type "rectangle"
11241 fill "#FFFFFF"
11242 fill2 "#FFFFFF"
11243 outline "#000000"
11244 ]
11245 LabelGraphics
11246 [
11247 text "null"
11248 outline "#000000"
11249 fill "#FFFFFF"
11250 fontSize 16
11251 fontName "Monospace"
11252 autoSizePolicy "node_width"
11253 anchor "t"
11254 borderDistance 0.0
11255 ]
11256 LabelGraphics
11257 [
11258 text "
11259 FunctionalOutput class
11260 FunctionalData class
11261 "
11262 fontSize 14
11263 fontName "Consolas"
11264 alignment "left"
11265 anchor "tl"
11266 borderDistance 6
11267 ]
11268 ]
11269
11270 node
11271 [
11272 id 11
11273 graphics
11274 [
11275 w 161.70000000000002
11276 h 40
11277 type "rectangle"
11278 fill "#FFFFFF"
11279 fill2 "#FFFFFF"
11280 outline "#000000"
11281 ]
11282 LabelGraphics
11283 [
11284 text "null"
11285 outline "#000000"
11286 fill "#FFFFFF"
11287 fontSize 16
11288 fontName "Monospace"
11289 autoSizePolicy "node_width"
11290 anchor "t"
11291 borderDistance 0.0
11292 ]
11293 LabelGraphics
11294 [
11295 text "
11296 FAMTerminator class
11297 "
11298 fontSize 14
11299 fontName "Consolas"
11300 alignment "left"
11301 anchor "tl"
11302 borderDistance 6
11303 ]
11304 ]
11305
11306 node
11307 [
11308 id 12
11309 graphics
11310 [
11311 w 112.2
11312 h 26
11313 type "rectangle"
11314 fill "#FFFFFF"
11315 fill2 "#FFFFFF"
11316 outline "#000000"
11317 ]
11318 LabelGraphics
11319 [
11320 text "New Integers"
11321 outline "#000000"
11322 fill "#FFFFFF"
11323 fontSize 16
11324 fontName "Monospace"
11325 autoSizePolicy "node_width"
11326 anchor "t"
11327 borderDistance 0.0
11328 ]
11329 LabelGraphics
11330 [
11331 text "
11332 "
11333 fontSize 14
11334 fontName "Consolas"
11335 alignment "left"
11336 anchor "tl"
11337 borderDistance 6
11338 ]
11339 ]
11340
11341 node
11342 [
11343 id 13
11344 graphics
11345 [
11346 w 85.80000000000001
11347 h 26
11348 type "rectangle"
11349 fill "#FFFFFF"
11350 fill2 "#FFFFFF"
11351 outline "#000000"
11352 ]
11353 LabelGraphics
11354 [
11355 text "New Reals"
11356 outline "#000000"
11357 fill "#FFFFFF"
11358 fontSize 16
11359 fontName "Monospace"
11360 autoSizePolicy "node_width"
11361 anchor "t"
11362 borderDistance 0.0
11363 ]
11364 LabelGraphics
11365 [
11366 text "
11367 "
11368 fontSize 14
11369 fontName "Consolas"
11370 alignment "left"
11371 anchor "tl"
11372 borderDistance 6
11373 ]
11374 ]
11375
11376 node
11377 [
11378 id 14
11379 graphics
11380 [
11381 w 103.4
11382 h 26
11383 type "rectangle"
11384 fill "#FFFFFF"
11385 fill2 "#FFFFFF"
11386 outline "#000000"
11387 ]
11388 LabelGraphics
11389 [
11390 text "New Strings"
11391 outline "#000000"
11392 fill "#FFFFFF"
11393 fontSize 16
11394 fontName "Monospace"
11395 autoSizePolicy "node_width"
11396 anchor "t"
11397 borderDistance 0.0
11398 ]
11399 LabelGraphics
11400 [
11401 text "
11402 "
11403 fontSize 14
11404 fontName "Consolas"
11405 alignment "left"
11406 anchor "tl"
11407 borderDistance 6
11408 ]
11409 ]
11410
11411 node
11412 [
11413 id 15
11414 graphics
11415 [
11416 w 103.4
11417 h 26
11418 type "rectangle"
11419 fill "#FFFFFF"
11420 fill2 "#FFFFFF"
11421 outline "#000000"
11422 ]
11423 LabelGraphics
11424 [
11425 text "New Objects"
11426 outline "#000000"
11427 fill "#FFFFFF"
11428 fontSize 16
11429 fontName "Monospace"
11430 autoSizePolicy "node_width"
11431 anchor "t"
11432 borderDistance 0.0
11433 ]
11434 LabelGraphics
11435 [
11436 text "
11437 "
11438 fontSize 14
11439 fontName "Consolas"
11440 alignment "left"
11441 anchor "tl"
11442 borderDistance 6
11443 ]
11444 ]
11445 edge
11446 [
11447 source 6
11448 target 7
11449 graphics
11450 [
11451 fill "#000000"
11452 width 3
11453 targetArrow "standard"
11454 ]
11455 LabelGraphics
11456 [
11457 text "interface reference FunctionalElement"
11458 fontSize 14
11459 fontName "Consolas"
11460 configuration "AutoFlippingLabel"
11461 model "six_pos"
11462 position "thead"
11463 ]
11464 ]
11465 edge
11466 [
11467 source 6
11468 target 3
11469 graphics
11470 [
11471 fill "#000000"
11472 targetArrow "standard"
11473 ]
11474 LabelGraphics
11475 [
11476 text "model reference FunctionalElement"
11477 fontSize 14
11478 fontName "Consolas"
11479 configuration "AutoFlippingLabel"
11480 model "six_pos"
11481 position "thead"
11482 ]
11483 ]
11484 edge
11485 [
11486 source 3
11487 target 6
11488 graphics
11489 [
11490 fill "#000000"
11491 width 3
11492 targetArrow "standard"
11493 ]
11494 LabelGraphics
11495 [
11496 text "rootElements reference FunctionalArchitectureModel"
11497 fontSize 14
11498 fontName "Consolas"
11499 configuration "AutoFlippingLabel"
11500 model "six_pos"
11501 position "thead"
11502 ]
11503 ]
11504 edge
11505 [
11506 source 9
11507 target 8
11508 graphics
11509 [
11510 fill "#000000"
11511 targetArrow "standard"
11512 ]
11513 LabelGraphics
11514 [
11515 text "data reference FAMTerminator"
11516 fontSize 14
11517 fontName "Consolas"
11518 configuration "AutoFlippingLabel"
11519 model "six_pos"
11520 position "thead"
11521 ]
11522 ]
11523 edge
11524 [
11525 source 11
11526 target 10
11527 graphics
11528 [
11529 fill "#000000"
11530 targetArrow "standard"
11531 ]
11532 LabelGraphics
11533 [
11534 text "data reference FAMTerminator"
11535 fontSize 14
11536 fontName "Consolas"
11537 configuration "AutoFlippingLabel"
11538 model "six_pos"
11539 position "thead"
11540 ]
11541 ]
11542 edge
11543 [
11544 source 7
11545 target 8
11546 graphics
11547 [
11548 fill "#000000"
11549 width 3
11550 targetArrow "standard"
11551 ]
11552 LabelGraphics
11553 [
11554 text "data reference FunctionalInterface"
11555 fontSize 14
11556 fontName "Consolas"
11557 configuration "AutoFlippingLabel"
11558 model "six_pos"
11559 position "thead"
11560 ]
11561 ]
11562 edge
11563 [
11564 source 7
11565 target 10
11566 graphics
11567 [
11568 fill "#000000"
11569 width 3
11570 targetArrow "standard"
11571 ]
11572 LabelGraphics
11573 [
11574 text "data reference FunctionalInterface"
11575 fontSize 14
11576 fontName "Consolas"
11577 configuration "AutoFlippingLabel"
11578 model "six_pos"
11579 position "thead"
11580 ]
11581 ]
11582 edge
11583 [
11584 source 7
11585 target 6
11586 graphics
11587 [
11588 fill "#000000"
11589 targetArrow "standard"
11590 ]
11591 LabelGraphics
11592 [
11593 text "element reference FunctionalInterface"
11594 fontSize 14
11595 fontName "Consolas"
11596 configuration "AutoFlippingLabel"
11597 model "six_pos"
11598 position "thead"
11599 ]
11600 ]
11601 edge
11602 [
11603 source 8
11604 target 9
11605 graphics
11606 [
11607 fill "#000000"
11608 width 3
11609 targetArrow "standard"
11610 ]
11611 LabelGraphics
11612 [
11613 text "terminator reference FunctionalData"
11614 fontSize 14
11615 fontName "Consolas"
11616 configuration "AutoFlippingLabel"
11617 model "six_pos"
11618 position "thead"
11619 ]
11620 ]
11621 edge
11622 [
11623 source 10
11624 target 11
11625 graphics
11626 [
11627 fill "#000000"
11628 width 3
11629 targetArrow "standard"
11630 ]
11631 LabelGraphics
11632 [
11633 text "terminator reference FunctionalData"
11634 fontSize 14
11635 fontName "Consolas"
11636 configuration "AutoFlippingLabel"
11637 model "six_pos"
11638 position "thead"
11639 ]
11640 ]
11641 edge
11642 [
11643 source 8
11644 target 7
11645 graphics
11646 [
11647 fill "#000000"
11648 targetArrow "standard"
11649 ]
11650 LabelGraphics
11651 [
11652 text "interface reference FunctionalData"
11653 fontSize 14
11654 fontName "Consolas"
11655 configuration "AutoFlippingLabel"
11656 model "six_pos"
11657 position "thead"
11658 ]
11659 ]
11660 edge
11661 [
11662 source 10
11663 target 7
11664 graphics
11665 [
11666 fill "#000000"
11667 targetArrow "standard"
11668 ]
11669 LabelGraphics
11670 [
11671 text "interface reference FunctionalData"
11672 fontSize 14
11673 fontName "Consolas"
11674 configuration "AutoFlippingLabel"
11675 model "six_pos"
11676 position "thead"
11677 ]
11678 ]
11679 edge
11680 [
11681 source 6
11682 target 0
11683 graphics
11684 [
11685 fill "#000000"
11686 targetArrow "standard"
11687 ]
11688 LabelGraphics
11689 [
11690 text "type attribute Function"
11691 fontSize 14
11692 fontName "Consolas"
11693 configuration "AutoFlippingLabel"
11694 model "six_pos"
11695 position "thead"
11696 ]
11697 ]
11698]
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 e33711c3..158ebb0f 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi
index fa323f3d..3dcec4a4 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,11 +1,13 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<fam:FunctionalInterface xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel"> 2<fam:FunctionalArchitectureModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel">
3 <data xsi:type="fam:FunctionalOutput"/> 3 <rootElements xsi:type="fam:Function">
4 <data xsi:type="fam:FunctionalOutput"> 4 <interface>
5 <terminator/> 5 <data xsi:type="fam:FunctionalOutput">
6 </data> 6 <terminator/>
7 <data xsi:type="fam:FunctionalInput"/> 7 </data>
8 <data xsi:type="fam:FunctionalOutput"> 8 <data xsi:type="fam:FunctionalOutput">
9 <terminator/> 9 <terminator/>
10 </data> 10 </data>
11</fam:FunctionalInterface> 11 </interface>
12 </rootElements>
13</fam:FunctionalArchitectureModel>
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 383a7f99..62441d63 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
@@ -8343,3 +8343,3359 @@ graph
8343 ] 8343 ]
8344 ] 8344 ]
8345] 8345]
8346graph
8347[
8348 node
8349 [
8350 id 0
8351 graphics
8352 [
8353 w 226.60000000000002
8354 h 40
8355 type "rectangle"
8356 fill "#FFFFFF"
8357 fill2 "#FFFFFF"
8358 outline "#000000"
8359 ]
8360 LabelGraphics
8361 [
8362 text "Root literal FunctionType"
8363 outline "#000000"
8364 fill "#FFFFFF"
8365 fontSize 16
8366 fontName "Monospace"
8367 autoSizePolicy "node_width"
8368 anchor "t"
8369 borderDistance 0.0
8370 ]
8371 LabelGraphics
8372 [
8373 text "
8374 FunctionType enum
8375 "
8376 fontSize 14
8377 fontName "Consolas"
8378 alignment "left"
8379 anchor "tl"
8380 borderDistance 6
8381 ]
8382 ]
8383
8384 node
8385 [
8386 id 1
8387 graphics
8388 [
8389 w 297.0
8390 h 40
8391 type "rectangle"
8392 fill "#FFFFFF"
8393 fill2 "#FFFFFF"
8394 outline "#000000"
8395 ]
8396 LabelGraphics
8397 [
8398 text "Intermediate literal FunctionType"
8399 outline "#000000"
8400 fill "#FFFFFF"
8401 fontSize 16
8402 fontName "Monospace"
8403 autoSizePolicy "node_width"
8404 anchor "t"
8405 borderDistance 0.0
8406 ]
8407 LabelGraphics
8408 [
8409 text "
8410 FunctionType enum
8411 "
8412 fontSize 14
8413 fontName "Consolas"
8414 alignment "left"
8415 anchor "tl"
8416 borderDistance 6
8417 ]
8418 ]
8419
8420 node
8421 [
8422 id 2
8423 graphics
8424 [
8425 w 226.60000000000002
8426 h 40
8427 type "rectangle"
8428 fill "#FFFFFF"
8429 fill2 "#FFFFFF"
8430 outline "#000000"
8431 ]
8432 LabelGraphics
8433 [
8434 text "Leaf literal FunctionType"
8435 outline "#000000"
8436 fill "#FFFFFF"
8437 fontSize 16
8438 fontName "Monospace"
8439 autoSizePolicy "node_width"
8440 anchor "t"
8441 borderDistance 0.0
8442 ]
8443 LabelGraphics
8444 [
8445 text "
8446 FunctionType enum
8447 "
8448 fontSize 14
8449 fontName "Consolas"
8450 alignment "left"
8451 anchor "tl"
8452 borderDistance 6
8453 ]
8454 ]
8455
8456 node
8457 [
8458 id 3
8459 graphics
8460 [
8461 w 41.800000000000004
8462 h 26
8463 type "rectangle"
8464 fill "#FFFFFF"
8465 fill2 "#FFFFFF"
8466 outline "#000000"
8467 ]
8468 LabelGraphics
8469 [
8470 text "true"
8471 outline "#000000"
8472 fill "#FFFFFF"
8473 fontSize 16
8474 fontName "Monospace"
8475 autoSizePolicy "node_width"
8476 anchor "t"
8477 borderDistance 0.0
8478 ]
8479 LabelGraphics
8480 [
8481 text "
8482 "
8483 fontSize 14
8484 fontName "Consolas"
8485 alignment "left"
8486 anchor "tl"
8487 borderDistance 6
8488 ]
8489 ]
8490
8491 node
8492 [
8493 id 4
8494 graphics
8495 [
8496 w 50.6
8497 h 26
8498 type "rectangle"
8499 fill "#FFFFFF"
8500 fill2 "#FFFFFF"
8501 outline "#000000"
8502 ]
8503 LabelGraphics
8504 [
8505 text "false"
8506 outline "#000000"
8507 fill "#FFFFFF"
8508 fontSize 16
8509 fontName "Monospace"
8510 autoSizePolicy "node_width"
8511 anchor "t"
8512 borderDistance 0.0
8513 ]
8514 LabelGraphics
8515 [
8516 text "
8517 "
8518 fontSize 14
8519 fontName "Consolas"
8520 alignment "left"
8521 anchor "tl"
8522 borderDistance 6
8523 ]
8524 ]
8525
8526 node
8527 [
8528 id 5
8529 graphics
8530 [
8531 w 207.9
8532 h 40
8533 type "rectangle"
8534 fill "#FFFFFF"
8535 fill2 "#FFFFFF"
8536 outline "#000000"
8537 ]
8538 LabelGraphics
8539 [
8540 text "null"
8541 outline "#000000"
8542 fill "#FFFFFF"
8543 fontSize 16
8544 fontName "Monospace"
8545 autoSizePolicy "node_width"
8546 anchor "t"
8547 borderDistance 0.0
8548 ]
8549 LabelGraphics
8550 [
8551 text "
8552 FunctionalInterface class
8553 "
8554 fontSize 14
8555 fontName "Consolas"
8556 alignment "left"
8557 anchor "tl"
8558 borderDistance 6
8559 ]
8560 ]
8561
8562 node
8563 [
8564 id 6
8565 graphics
8566 [
8567 w 184.8
8568 h 54
8569 type "rectangle"
8570 fill "#FFFFFF"
8571 fill2 "#FFFFFF"
8572 outline "#000000"
8573 ]
8574 LabelGraphics
8575 [
8576 text "null"
8577 outline "#000000"
8578 fill "#FFFFFF"
8579 fontSize 16
8580 fontName "Monospace"
8581 autoSizePolicy "node_width"
8582 anchor "t"
8583 borderDistance 0.0
8584 ]
8585 LabelGraphics
8586 [
8587 text "
8588 FunctionalOutput class
8589 FunctionalData class
8590 "
8591 fontSize 14
8592 fontName "Consolas"
8593 alignment "left"
8594 anchor "tl"
8595 borderDistance 6
8596 ]
8597 ]
8598
8599 node
8600 [
8601 id 7
8602 graphics
8603 [
8604 w 177.10000000000002
8605 h 54
8606 type "rectangle"
8607 fill "#FFFFFF"
8608 fill2 "#FFFFFF"
8609 outline "#000000"
8610 ]
8611 LabelGraphics
8612 [
8613 text "null"
8614 outline "#000000"
8615 fill "#FFFFFF"
8616 fontSize 16
8617 fontName "Monospace"
8618 autoSizePolicy "node_width"
8619 anchor "t"
8620 borderDistance 0.0
8621 ]
8622 LabelGraphics
8623 [
8624 text "
8625 FunctionalInput class
8626 FunctionalData class
8627 "
8628 fontSize 14
8629 fontName "Consolas"
8630 alignment "left"
8631 anchor "tl"
8632 borderDistance 6
8633 ]
8634 ]
8635
8636 node
8637 [
8638 id 8
8639 graphics
8640 [
8641 w 161.70000000000002
8642 h 40
8643 type "rectangle"
8644 fill "#FFFFFF"
8645 fill2 "#FFFFFF"
8646 outline "#000000"
8647 ]
8648 LabelGraphics
8649 [
8650 text "null"
8651 outline "#000000"
8652 fill "#FFFFFF"
8653 fontSize 16
8654 fontName "Monospace"
8655 autoSizePolicy "node_width"
8656 anchor "t"
8657 borderDistance 0.0
8658 ]
8659 LabelGraphics
8660 [
8661 text "
8662 FAMTerminator class
8663 "
8664 fontSize 14
8665 fontName "Consolas"
8666 alignment "left"
8667 anchor "tl"
8668 borderDistance 6
8669 ]
8670 ]
8671
8672 node
8673 [
8674 id 9
8675 graphics
8676 [
8677 w 184.8
8678 h 54
8679 type "rectangle"
8680 fill "#FFFFFF"
8681 fill2 "#FFFFFF"
8682 outline "#000000"
8683 ]
8684 LabelGraphics
8685 [
8686 text "null"
8687 outline "#000000"
8688 fill "#FFFFFF"
8689 fontSize 16
8690 fontName "Monospace"
8691 autoSizePolicy "node_width"
8692 anchor "t"
8693 borderDistance 0.0
8694 ]
8695 LabelGraphics
8696 [
8697 text "
8698 FunctionalOutput class
8699 FunctionalData class
8700 "
8701 fontSize 14
8702 fontName "Consolas"
8703 alignment "left"
8704 anchor "tl"
8705 borderDistance 6
8706 ]
8707 ]
8708
8709 node
8710 [
8711 id 10
8712 graphics
8713 [
8714 w 184.8
8715 h 54
8716 type "rectangle"
8717 fill "#FFFFFF"
8718 fill2 "#FFFFFF"
8719 outline "#000000"
8720 ]
8721 LabelGraphics
8722 [
8723 text "null"
8724 outline "#000000"
8725 fill "#FFFFFF"
8726 fontSize 16
8727 fontName "Monospace"
8728 autoSizePolicy "node_width"
8729 anchor "t"
8730 borderDistance 0.0
8731 ]
8732 LabelGraphics
8733 [
8734 text "
8735 FunctionalOutput class
8736 FunctionalData class
8737 "
8738 fontSize 14
8739 fontName "Consolas"
8740 alignment "left"
8741 anchor "tl"
8742 borderDistance 6
8743 ]
8744 ]
8745
8746 node
8747 [
8748 id 11
8749 graphics
8750 [
8751 w 177.10000000000002
8752 h 40
8753 type "rectangle"
8754 fill "#FFFFFF"
8755 fill2 "#FFFFFF"
8756 outline "#000000"
8757 ]
8758 LabelGraphics
8759 [
8760 text "null"
8761 outline "#000000"
8762 fill "#FFFFFF"
8763 fontSize 16
8764 fontName "Monospace"
8765 autoSizePolicy "node_width"
8766 anchor "t"
8767 borderDistance 0.0
8768 ]
8769 LabelGraphics
8770 [
8771 text "
8772 InformationLink class
8773 "
8774 fontSize 14
8775 fontName "Consolas"
8776 alignment "left"
8777 anchor "tl"
8778 borderDistance 6
8779 ]
8780 ]
8781
8782 node
8783 [
8784 id 12
8785 graphics
8786 [
8787 w 112.2
8788 h 26
8789 type "rectangle"
8790 fill "#FFFFFF"
8791 fill2 "#FFFFFF"
8792 outline "#000000"
8793 ]
8794 LabelGraphics
8795 [
8796 text "New Integers"
8797 outline "#000000"
8798 fill "#FFFFFF"
8799 fontSize 16
8800 fontName "Monospace"
8801 autoSizePolicy "node_width"
8802 anchor "t"
8803 borderDistance 0.0
8804 ]
8805 LabelGraphics
8806 [
8807 text "
8808 "
8809 fontSize 14
8810 fontName "Consolas"
8811 alignment "left"
8812 anchor "tl"
8813 borderDistance 6
8814 ]
8815 ]
8816
8817 node
8818 [
8819 id 13
8820 graphics
8821 [
8822 w 85.80000000000001
8823 h 26
8824 type "rectangle"
8825 fill "#FFFFFF"
8826 fill2 "#FFFFFF"
8827 outline "#000000"
8828 ]
8829 LabelGraphics
8830 [
8831 text "New Reals"
8832 outline "#000000"
8833 fill "#FFFFFF"
8834 fontSize 16
8835 fontName "Monospace"
8836 autoSizePolicy "node_width"
8837 anchor "t"
8838 borderDistance 0.0
8839 ]
8840 LabelGraphics
8841 [
8842 text "
8843 "
8844 fontSize 14
8845 fontName "Consolas"
8846 alignment "left"
8847 anchor "tl"
8848 borderDistance 6
8849 ]
8850 ]
8851
8852 node
8853 [
8854 id 14
8855 graphics
8856 [
8857 w 103.4
8858 h 26
8859 type "rectangle"
8860 fill "#FFFFFF"
8861 fill2 "#FFFFFF"
8862 outline "#000000"
8863 ]
8864 LabelGraphics
8865 [
8866 text "New Strings"
8867 outline "#000000"
8868 fill "#FFFFFF"
8869 fontSize 16
8870 fontName "Monospace"
8871 autoSizePolicy "node_width"
8872 anchor "t"
8873 borderDistance 0.0
8874 ]
8875 LabelGraphics
8876 [
8877 text "
8878 "
8879 fontSize 14
8880 fontName "Consolas"
8881 alignment "left"
8882 anchor "tl"
8883 borderDistance 6
8884 ]
8885 ]
8886
8887 node
8888 [
8889 id 15
8890 graphics
8891 [
8892 w 103.4
8893 h 26
8894 type "rectangle"
8895 fill "#FFFFFF"
8896 fill2 "#FFFFFF"
8897 outline "#000000"
8898 ]
8899 LabelGraphics
8900 [
8901 text "New Objects"
8902 outline "#000000"
8903 fill "#FFFFFF"
8904 fontSize 16
8905 fontName "Monospace"
8906 autoSizePolicy "node_width"
8907 anchor "t"
8908 borderDistance 0.0
8909 ]
8910 LabelGraphics
8911 [
8912 text "
8913 "
8914 fontSize 14
8915 fontName "Consolas"
8916 alignment "left"
8917 anchor "tl"
8918 borderDistance 6
8919 ]
8920 ]
8921 edge
8922 [
8923 source 8
8924 target 6
8925 graphics
8926 [
8927 fill "#000000"
8928 targetArrow "standard"
8929 ]
8930 LabelGraphics
8931 [
8932 text "data reference FAMTerminator"
8933 fontSize 14
8934 fontName "Consolas"
8935 configuration "AutoFlippingLabel"
8936 model "six_pos"
8937 position "thead"
8938 ]
8939 ]
8940 edge
8941 [
8942 source 11
8943 target 10
8944 graphics
8945 [
8946 fill "#000000"
8947 targetArrow "standard"
8948 ]
8949 LabelGraphics
8950 [
8951 text "from reference InformationLink"
8952 fontSize 14
8953 fontName "Consolas"
8954 configuration "AutoFlippingLabel"
8955 model "six_pos"
8956 position "thead"
8957 ]
8958 ]
8959 edge
8960 [
8961 source 11
8962 target 7
8963 graphics
8964 [
8965 fill "#000000"
8966 targetArrow "standard"
8967 ]
8968 LabelGraphics
8969 [
8970 text "to reference InformationLink"
8971 fontSize 14
8972 fontName "Consolas"
8973 configuration "AutoFlippingLabel"
8974 model "six_pos"
8975 position "thead"
8976 ]
8977 ]
8978 edge
8979 [
8980 source 5
8981 target 6
8982 graphics
8983 [
8984 fill "#000000"
8985 width 3
8986 targetArrow "standard"
8987 ]
8988 LabelGraphics
8989 [
8990 text "data reference FunctionalInterface"
8991 fontSize 14
8992 fontName "Consolas"
8993 configuration "AutoFlippingLabel"
8994 model "six_pos"
8995 position "thead"
8996 ]
8997 ]
8998 edge
8999 [
9000 source 5
9001 target 7
9002 graphics
9003 [
9004 fill "#000000"
9005 width 3
9006 targetArrow "standard"
9007 ]
9008 LabelGraphics
9009 [
9010 text "data reference FunctionalInterface"
9011 fontSize 14
9012 fontName "Consolas"
9013 configuration "AutoFlippingLabel"
9014 model "six_pos"
9015 position "thead"
9016 ]
9017 ]
9018 edge
9019 [
9020 source 5
9021 target 9
9022 graphics
9023 [
9024 fill "#000000"
9025 width 3
9026 targetArrow "standard"
9027 ]
9028 LabelGraphics
9029 [
9030 text "data reference FunctionalInterface"
9031 fontSize 14
9032 fontName "Consolas"
9033 configuration "AutoFlippingLabel"
9034 model "six_pos"
9035 position "thead"
9036 ]
9037 ]
9038 edge
9039 [
9040 source 5
9041 target 10
9042 graphics
9043 [
9044 fill "#000000"
9045 width 3
9046 targetArrow "standard"
9047 ]
9048 LabelGraphics
9049 [
9050 text "data reference FunctionalInterface"
9051 fontSize 14
9052 fontName "Consolas"
9053 configuration "AutoFlippingLabel"
9054 model "six_pos"
9055 position "thead"
9056 ]
9057 ]
9058 edge
9059 [
9060 source 7
9061 target 11
9062 graphics
9063 [
9064 fill "#000000"
9065 targetArrow "standard"
9066 ]
9067 LabelGraphics
9068 [
9069 text "IncomingLinks reference FunctionalInput"
9070 fontSize 14
9071 fontName "Consolas"
9072 configuration "AutoFlippingLabel"
9073 model "six_pos"
9074 position "thead"
9075 ]
9076 ]
9077 edge
9078 [
9079 source 10
9080 target 11
9081 graphics
9082 [
9083 fill "#000000"
9084 width 3
9085 targetArrow "standard"
9086 ]
9087 LabelGraphics
9088 [
9089 text "outgoingLinks reference FunctionalOutput"
9090 fontSize 14
9091 fontName "Consolas"
9092 configuration "AutoFlippingLabel"
9093 model "six_pos"
9094 position "thead"
9095 ]
9096 ]
9097 edge
9098 [
9099 source 6
9100 target 8
9101 graphics
9102 [
9103 fill "#000000"
9104 width 3
9105 targetArrow "standard"
9106 ]
9107 LabelGraphics
9108 [
9109 text "terminator reference FunctionalData"
9110 fontSize 14
9111 fontName "Consolas"
9112 configuration "AutoFlippingLabel"
9113 model "six_pos"
9114 position "thead"
9115 ]
9116 ]
9117 edge
9118 [
9119 source 6
9120 target 5
9121 graphics
9122 [
9123 fill "#000000"
9124 targetArrow "standard"
9125 ]
9126 LabelGraphics
9127 [
9128 text "interface reference FunctionalData"
9129 fontSize 14
9130 fontName "Consolas"
9131 configuration "AutoFlippingLabel"
9132 model "six_pos"
9133 position "thead"
9134 ]
9135 ]
9136 edge
9137 [
9138 source 7
9139 target 5
9140 graphics
9141 [
9142 fill "#000000"
9143 targetArrow "standard"
9144 ]
9145 LabelGraphics
9146 [
9147 text "interface reference FunctionalData"
9148 fontSize 14
9149 fontName "Consolas"
9150 configuration "AutoFlippingLabel"
9151 model "six_pos"
9152 position "thead"
9153 ]
9154 ]
9155 edge
9156 [
9157 source 9
9158 target 5
9159 graphics
9160 [
9161 fill "#000000"
9162 targetArrow "standard"
9163 ]
9164 LabelGraphics
9165 [
9166 text "interface reference FunctionalData"
9167 fontSize 14
9168 fontName "Consolas"
9169 configuration "AutoFlippingLabel"
9170 model "six_pos"
9171 position "thead"
9172 ]
9173 ]
9174 edge
9175 [
9176 source 10
9177 target 5
9178 graphics
9179 [
9180 fill "#000000"
9181 targetArrow "standard"
9182 ]
9183 LabelGraphics
9184 [
9185 text "interface reference FunctionalData"
9186 fontSize 14
9187 fontName "Consolas"
9188 configuration "AutoFlippingLabel"
9189 model "six_pos"
9190 position "thead"
9191 ]
9192 ]
9193]
9194graph
9195[
9196 node
9197 [
9198 id 0
9199 graphics
9200 [
9201 w 226.60000000000002
9202 h 40
9203 type "rectangle"
9204 fill "#FFFFFF"
9205 fill2 "#FFFFFF"
9206 outline "#000000"
9207 ]
9208 LabelGraphics
9209 [
9210 text "Root literal FunctionType"
9211 outline "#000000"
9212 fill "#FFFFFF"
9213 fontSize 16
9214 fontName "Monospace"
9215 autoSizePolicy "node_width"
9216 anchor "t"
9217 borderDistance 0.0
9218 ]
9219 LabelGraphics
9220 [
9221 text "
9222 FunctionType enum
9223 "
9224 fontSize 14
9225 fontName "Consolas"
9226 alignment "left"
9227 anchor "tl"
9228 borderDistance 6
9229 ]
9230 ]
9231
9232 node
9233 [
9234 id 1
9235 graphics
9236 [
9237 w 297.0
9238 h 40
9239 type "rectangle"
9240 fill "#FFFFFF"
9241 fill2 "#FFFFFF"
9242 outline "#000000"
9243 ]
9244 LabelGraphics
9245 [
9246 text "Intermediate literal FunctionType"
9247 outline "#000000"
9248 fill "#FFFFFF"
9249 fontSize 16
9250 fontName "Monospace"
9251 autoSizePolicy "node_width"
9252 anchor "t"
9253 borderDistance 0.0
9254 ]
9255 LabelGraphics
9256 [
9257 text "
9258 FunctionType enum
9259 "
9260 fontSize 14
9261 fontName "Consolas"
9262 alignment "left"
9263 anchor "tl"
9264 borderDistance 6
9265 ]
9266 ]
9267
9268 node
9269 [
9270 id 2
9271 graphics
9272 [
9273 w 226.60000000000002
9274 h 40
9275 type "rectangle"
9276 fill "#FFFFFF"
9277 fill2 "#FFFFFF"
9278 outline "#000000"
9279 ]
9280 LabelGraphics
9281 [
9282 text "Leaf literal FunctionType"
9283 outline "#000000"
9284 fill "#FFFFFF"
9285 fontSize 16
9286 fontName "Monospace"
9287 autoSizePolicy "node_width"
9288 anchor "t"
9289 borderDistance 0.0
9290 ]
9291 LabelGraphics
9292 [
9293 text "
9294 FunctionType enum
9295 "
9296 fontSize 14
9297 fontName "Consolas"
9298 alignment "left"
9299 anchor "tl"
9300 borderDistance 6
9301 ]
9302 ]
9303
9304 node
9305 [
9306 id 3
9307 graphics
9308 [
9309 w 41.800000000000004
9310 h 26
9311 type "rectangle"
9312 fill "#FFFFFF"
9313 fill2 "#FFFFFF"
9314 outline "#000000"
9315 ]
9316 LabelGraphics
9317 [
9318 text "true"
9319 outline "#000000"
9320 fill "#FFFFFF"
9321 fontSize 16
9322 fontName "Monospace"
9323 autoSizePolicy "node_width"
9324 anchor "t"
9325 borderDistance 0.0
9326 ]
9327 LabelGraphics
9328 [
9329 text "
9330 "
9331 fontSize 14
9332 fontName "Consolas"
9333 alignment "left"
9334 anchor "tl"
9335 borderDistance 6
9336 ]
9337 ]
9338
9339 node
9340 [
9341 id 4
9342 graphics
9343 [
9344 w 50.6
9345 h 26
9346 type "rectangle"
9347 fill "#FFFFFF"
9348 fill2 "#FFFFFF"
9349 outline "#000000"
9350 ]
9351 LabelGraphics
9352 [
9353 text "false"
9354 outline "#000000"
9355 fill "#FFFFFF"
9356 fontSize 16
9357 fontName "Monospace"
9358 autoSizePolicy "node_width"
9359 anchor "t"
9360 borderDistance 0.0
9361 ]
9362 LabelGraphics
9363 [
9364 text "
9365 "
9366 fontSize 14
9367 fontName "Consolas"
9368 alignment "left"
9369 anchor "tl"
9370 borderDistance 6
9371 ]
9372 ]
9373
9374 node
9375 [
9376 id 5
9377 graphics
9378 [
9379 w 207.9
9380 h 40
9381 type "rectangle"
9382 fill "#FFFFFF"
9383 fill2 "#FFFFFF"
9384 outline "#000000"
9385 ]
9386 LabelGraphics
9387 [
9388 text "null"
9389 outline "#000000"
9390 fill "#FFFFFF"
9391 fontSize 16
9392 fontName "Monospace"
9393 autoSizePolicy "node_width"
9394 anchor "t"
9395 borderDistance 0.0
9396 ]
9397 LabelGraphics
9398 [
9399 text "
9400 FunctionalInterface class
9401 "
9402 fontSize 14
9403 fontName "Consolas"
9404 alignment "left"
9405 anchor "tl"
9406 borderDistance 6
9407 ]
9408 ]
9409
9410 node
9411 [
9412 id 6
9413 graphics
9414 [
9415 w 177.10000000000002
9416 h 54
9417 type "rectangle"
9418 fill "#FFFFFF"
9419 fill2 "#FFFFFF"
9420 outline "#000000"
9421 ]
9422 LabelGraphics
9423 [
9424 text "null"
9425 outline "#000000"
9426 fill "#FFFFFF"
9427 fontSize 16
9428 fontName "Monospace"
9429 autoSizePolicy "node_width"
9430 anchor "t"
9431 borderDistance 0.0
9432 ]
9433 LabelGraphics
9434 [
9435 text "
9436 FunctionalInput class
9437 FunctionalData class
9438 "
9439 fontSize 14
9440 fontName "Consolas"
9441 alignment "left"
9442 anchor "tl"
9443 borderDistance 6
9444 ]
9445 ]
9446
9447 node
9448 [
9449 id 7
9450 graphics
9451 [
9452 w 177.10000000000002
9453 h 54
9454 type "rectangle"
9455 fill "#FFFFFF"
9456 fill2 "#FFFFFF"
9457 outline "#000000"
9458 ]
9459 LabelGraphics
9460 [
9461 text "null"
9462 outline "#000000"
9463 fill "#FFFFFF"
9464 fontSize 16
9465 fontName "Monospace"
9466 autoSizePolicy "node_width"
9467 anchor "t"
9468 borderDistance 0.0
9469 ]
9470 LabelGraphics
9471 [
9472 text "
9473 FunctionalInput class
9474 FunctionalData class
9475 "
9476 fontSize 14
9477 fontName "Consolas"
9478 alignment "left"
9479 anchor "tl"
9480 borderDistance 6
9481 ]
9482 ]
9483
9484 node
9485 [
9486 id 8
9487 graphics
9488 [
9489 w 177.10000000000002
9490 h 54
9491 type "rectangle"
9492 fill "#FFFFFF"
9493 fill2 "#FFFFFF"
9494 outline "#000000"
9495 ]
9496 LabelGraphics
9497 [
9498 text "null"
9499 outline "#000000"
9500 fill "#FFFFFF"
9501 fontSize 16
9502 fontName "Monospace"
9503 autoSizePolicy "node_width"
9504 anchor "t"
9505 borderDistance 0.0
9506 ]
9507 LabelGraphics
9508 [
9509 text "
9510 FunctionalInput class
9511 FunctionalData class
9512 "
9513 fontSize 14
9514 fontName "Consolas"
9515 alignment "left"
9516 anchor "tl"
9517 borderDistance 6
9518 ]
9519 ]
9520
9521 node
9522 [
9523 id 9
9524 graphics
9525 [
9526 w 161.70000000000002
9527 h 40
9528 type "rectangle"
9529 fill "#FFFFFF"
9530 fill2 "#FFFFFF"
9531 outline "#000000"
9532 ]
9533 LabelGraphics
9534 [
9535 text "null"
9536 outline "#000000"
9537 fill "#FFFFFF"
9538 fontSize 16
9539 fontName "Monospace"
9540 autoSizePolicy "node_width"
9541 anchor "t"
9542 borderDistance 0.0
9543 ]
9544 LabelGraphics
9545 [
9546 text "
9547 FAMTerminator class
9548 "
9549 fontSize 14
9550 fontName "Consolas"
9551 alignment "left"
9552 anchor "tl"
9553 borderDistance 6
9554 ]
9555 ]
9556
9557 node
9558 [
9559 id 10
9560 graphics
9561 [
9562 w 161.70000000000002
9563 h 40
9564 type "rectangle"
9565 fill "#FFFFFF"
9566 fill2 "#FFFFFF"
9567 outline "#000000"
9568 ]
9569 LabelGraphics
9570 [
9571 text "null"
9572 outline "#000000"
9573 fill "#FFFFFF"
9574 fontSize 16
9575 fontName "Monospace"
9576 autoSizePolicy "node_width"
9577 anchor "t"
9578 borderDistance 0.0
9579 ]
9580 LabelGraphics
9581 [
9582 text "
9583 FAMTerminator class
9584 "
9585 fontSize 14
9586 fontName "Consolas"
9587 alignment "left"
9588 anchor "tl"
9589 borderDistance 6
9590 ]
9591 ]
9592
9593 node
9594 [
9595 id 11
9596 graphics
9597 [
9598 w 177.10000000000002
9599 h 54
9600 type "rectangle"
9601 fill "#FFFFFF"
9602 fill2 "#FFFFFF"
9603 outline "#000000"
9604 ]
9605 LabelGraphics
9606 [
9607 text "null"
9608 outline "#000000"
9609 fill "#FFFFFF"
9610 fontSize 16
9611 fontName "Monospace"
9612 autoSizePolicy "node_width"
9613 anchor "t"
9614 borderDistance 0.0
9615 ]
9616 LabelGraphics
9617 [
9618 text "
9619 FunctionalInput class
9620 FunctionalData class
9621 "
9622 fontSize 14
9623 fontName "Consolas"
9624 alignment "left"
9625 anchor "tl"
9626 borderDistance 6
9627 ]
9628 ]
9629
9630 node
9631 [
9632 id 12
9633 graphics
9634 [
9635 w 112.2
9636 h 26
9637 type "rectangle"
9638 fill "#FFFFFF"
9639 fill2 "#FFFFFF"
9640 outline "#000000"
9641 ]
9642 LabelGraphics
9643 [
9644 text "New Integers"
9645 outline "#000000"
9646 fill "#FFFFFF"
9647 fontSize 16
9648 fontName "Monospace"
9649 autoSizePolicy "node_width"
9650 anchor "t"
9651 borderDistance 0.0
9652 ]
9653 LabelGraphics
9654 [
9655 text "
9656 "
9657 fontSize 14
9658 fontName "Consolas"
9659 alignment "left"
9660 anchor "tl"
9661 borderDistance 6
9662 ]
9663 ]
9664
9665 node
9666 [
9667 id 13
9668 graphics
9669 [
9670 w 85.80000000000001
9671 h 26
9672 type "rectangle"
9673 fill "#FFFFFF"
9674 fill2 "#FFFFFF"
9675 outline "#000000"
9676 ]
9677 LabelGraphics
9678 [
9679 text "New Reals"
9680 outline "#000000"
9681 fill "#FFFFFF"
9682 fontSize 16
9683 fontName "Monospace"
9684 autoSizePolicy "node_width"
9685 anchor "t"
9686 borderDistance 0.0
9687 ]
9688 LabelGraphics
9689 [
9690 text "
9691 "
9692 fontSize 14
9693 fontName "Consolas"
9694 alignment "left"
9695 anchor "tl"
9696 borderDistance 6
9697 ]
9698 ]
9699
9700 node
9701 [
9702 id 14
9703 graphics
9704 [
9705 w 103.4
9706 h 26
9707 type "rectangle"
9708 fill "#FFFFFF"
9709 fill2 "#FFFFFF"
9710 outline "#000000"
9711 ]
9712 LabelGraphics
9713 [
9714 text "New Strings"
9715 outline "#000000"
9716 fill "#FFFFFF"
9717 fontSize 16
9718 fontName "Monospace"
9719 autoSizePolicy "node_width"
9720 anchor "t"
9721 borderDistance 0.0
9722 ]
9723 LabelGraphics
9724 [
9725 text "
9726 "
9727 fontSize 14
9728 fontName "Consolas"
9729 alignment "left"
9730 anchor "tl"
9731 borderDistance 6
9732 ]
9733 ]
9734
9735 node
9736 [
9737 id 15
9738 graphics
9739 [
9740 w 103.4
9741 h 26
9742 type "rectangle"
9743 fill "#FFFFFF"
9744 fill2 "#FFFFFF"
9745 outline "#000000"
9746 ]
9747 LabelGraphics
9748 [
9749 text "New Objects"
9750 outline "#000000"
9751 fill "#FFFFFF"
9752 fontSize 16
9753 fontName "Monospace"
9754 autoSizePolicy "node_width"
9755 anchor "t"
9756 borderDistance 0.0
9757 ]
9758 LabelGraphics
9759 [
9760 text "
9761 "
9762 fontSize 14
9763 fontName "Consolas"
9764 alignment "left"
9765 anchor "tl"
9766 borderDistance 6
9767 ]
9768 ]
9769 edge
9770 [
9771 source 9
9772 target 8
9773 graphics
9774 [
9775 fill "#000000"
9776 targetArrow "standard"
9777 ]
9778 LabelGraphics
9779 [
9780 text "data reference FAMTerminator"
9781 fontSize 14
9782 fontName "Consolas"
9783 configuration "AutoFlippingLabel"
9784 model "six_pos"
9785 position "thead"
9786 ]
9787 ]
9788 edge
9789 [
9790 source 10
9791 target 6
9792 graphics
9793 [
9794 fill "#000000"
9795 targetArrow "standard"
9796 ]
9797 LabelGraphics
9798 [
9799 text "data reference FAMTerminator"
9800 fontSize 14
9801 fontName "Consolas"
9802 configuration "AutoFlippingLabel"
9803 model "six_pos"
9804 position "thead"
9805 ]
9806 ]
9807 edge
9808 [
9809 source 5
9810 target 6
9811 graphics
9812 [
9813 fill "#000000"
9814 width 3
9815 targetArrow "standard"
9816 ]
9817 LabelGraphics
9818 [
9819 text "data reference FunctionalInterface"
9820 fontSize 14
9821 fontName "Consolas"
9822 configuration "AutoFlippingLabel"
9823 model "six_pos"
9824 position "thead"
9825 ]
9826 ]
9827 edge
9828 [
9829 source 5
9830 target 7
9831 graphics
9832 [
9833 fill "#000000"
9834 width 3
9835 targetArrow "standard"
9836 ]
9837 LabelGraphics
9838 [
9839 text "data reference FunctionalInterface"
9840 fontSize 14
9841 fontName "Consolas"
9842 configuration "AutoFlippingLabel"
9843 model "six_pos"
9844 position "thead"
9845 ]
9846 ]
9847 edge
9848 [
9849 source 5
9850 target 8
9851 graphics
9852 [
9853 fill "#000000"
9854 width 3
9855 targetArrow "standard"
9856 ]
9857 LabelGraphics
9858 [
9859 text "data reference FunctionalInterface"
9860 fontSize 14
9861 fontName "Consolas"
9862 configuration "AutoFlippingLabel"
9863 model "six_pos"
9864 position "thead"
9865 ]
9866 ]
9867 edge
9868 [
9869 source 5
9870 target 11
9871 graphics
9872 [
9873 fill "#000000"
9874 width 3
9875 targetArrow "standard"
9876 ]
9877 LabelGraphics
9878 [
9879 text "data reference FunctionalInterface"
9880 fontSize 14
9881 fontName "Consolas"
9882 configuration "AutoFlippingLabel"
9883 model "six_pos"
9884 position "thead"
9885 ]
9886 ]
9887 edge
9888 [
9889 source 8
9890 target 9
9891 graphics
9892 [
9893 fill "#000000"
9894 width 3
9895 targetArrow "standard"
9896 ]
9897 LabelGraphics
9898 [
9899 text "terminator reference FunctionalData"
9900 fontSize 14
9901 fontName "Consolas"
9902 configuration "AutoFlippingLabel"
9903 model "six_pos"
9904 position "thead"
9905 ]
9906 ]
9907 edge
9908 [
9909 source 6
9910 target 10
9911 graphics
9912 [
9913 fill "#000000"
9914 width 3
9915 targetArrow "standard"
9916 ]
9917 LabelGraphics
9918 [
9919 text "terminator reference FunctionalData"
9920 fontSize 14
9921 fontName "Consolas"
9922 configuration "AutoFlippingLabel"
9923 model "six_pos"
9924 position "thead"
9925 ]
9926 ]
9927 edge
9928 [
9929 source 6
9930 target 5
9931 graphics
9932 [
9933 fill "#000000"
9934 targetArrow "standard"
9935 ]
9936 LabelGraphics
9937 [
9938 text "interface reference FunctionalData"
9939 fontSize 14
9940 fontName "Consolas"
9941 configuration "AutoFlippingLabel"
9942 model "six_pos"
9943 position "thead"
9944 ]
9945 ]
9946 edge
9947 [
9948 source 7
9949 target 5
9950 graphics
9951 [
9952 fill "#000000"
9953 targetArrow "standard"
9954 ]
9955 LabelGraphics
9956 [
9957 text "interface reference FunctionalData"
9958 fontSize 14
9959 fontName "Consolas"
9960 configuration "AutoFlippingLabel"
9961 model "six_pos"
9962 position "thead"
9963 ]
9964 ]
9965 edge
9966 [
9967 source 8
9968 target 5
9969 graphics
9970 [
9971 fill "#000000"
9972 targetArrow "standard"
9973 ]
9974 LabelGraphics
9975 [
9976 text "interface reference FunctionalData"
9977 fontSize 14
9978 fontName "Consolas"
9979 configuration "AutoFlippingLabel"
9980 model "six_pos"
9981 position "thead"
9982 ]
9983 ]
9984 edge
9985 [
9986 source 11
9987 target 5
9988 graphics
9989 [
9990 fill "#000000"
9991 targetArrow "standard"
9992 ]
9993 LabelGraphics
9994 [
9995 text "interface reference FunctionalData"
9996 fontSize 14
9997 fontName "Consolas"
9998 configuration "AutoFlippingLabel"
9999 model "six_pos"
10000 position "thead"
10001 ]
10002 ]
10003]
10004graph
10005[
10006 node
10007 [
10008 id 0
10009 graphics
10010 [
10011 w 226.60000000000002
10012 h 40
10013 type "rectangle"
10014 fill "#FFFFFF"
10015 fill2 "#FFFFFF"
10016 outline "#000000"
10017 ]
10018 LabelGraphics
10019 [
10020 text "Root literal FunctionType"
10021 outline "#000000"
10022 fill "#FFFFFF"
10023 fontSize 16
10024 fontName "Monospace"
10025 autoSizePolicy "node_width"
10026 anchor "t"
10027 borderDistance 0.0
10028 ]
10029 LabelGraphics
10030 [
10031 text "
10032 FunctionType enum
10033 "
10034 fontSize 14
10035 fontName "Consolas"
10036 alignment "left"
10037 anchor "tl"
10038 borderDistance 6
10039 ]
10040 ]
10041
10042 node
10043 [
10044 id 1
10045 graphics
10046 [
10047 w 297.0
10048 h 40
10049 type "rectangle"
10050 fill "#FFFFFF"
10051 fill2 "#FFFFFF"
10052 outline "#000000"
10053 ]
10054 LabelGraphics
10055 [
10056 text "Intermediate literal FunctionType"
10057 outline "#000000"
10058 fill "#FFFFFF"
10059 fontSize 16
10060 fontName "Monospace"
10061 autoSizePolicy "node_width"
10062 anchor "t"
10063 borderDistance 0.0
10064 ]
10065 LabelGraphics
10066 [
10067 text "
10068 FunctionType enum
10069 "
10070 fontSize 14
10071 fontName "Consolas"
10072 alignment "left"
10073 anchor "tl"
10074 borderDistance 6
10075 ]
10076 ]
10077
10078 node
10079 [
10080 id 2
10081 graphics
10082 [
10083 w 226.60000000000002
10084 h 40
10085 type "rectangle"
10086 fill "#FFFFFF"
10087 fill2 "#FFFFFF"
10088 outline "#000000"
10089 ]
10090 LabelGraphics
10091 [
10092 text "Leaf literal FunctionType"
10093 outline "#000000"
10094 fill "#FFFFFF"
10095 fontSize 16
10096 fontName "Monospace"
10097 autoSizePolicy "node_width"
10098 anchor "t"
10099 borderDistance 0.0
10100 ]
10101 LabelGraphics
10102 [
10103 text "
10104 FunctionType enum
10105 "
10106 fontSize 14
10107 fontName "Consolas"
10108 alignment "left"
10109 anchor "tl"
10110 borderDistance 6
10111 ]
10112 ]
10113
10114 node
10115 [
10116 id 3
10117 graphics
10118 [
10119 w 361.90000000000003
10120 h 54
10121 type "rectangle"
10122 fill "#FFFFFF"
10123 fill2 "#FFFFFF"
10124 outline "#000000"
10125 ]
10126 LabelGraphics
10127 [
10128 text "o 1"
10129 outline "#000000"
10130 fill "#FFFFFF"
10131 fontSize 16
10132 fontName "Monospace"
10133 autoSizePolicy "node_width"
10134 anchor "t"
10135 borderDistance 0.0
10136 ]
10137 LabelGraphics
10138 [
10139 text "
10140 FunctionalArchitectureModel class DefinedPart
10141 FunctionalArchitectureModel class
10142 "
10143 fontSize 14
10144 fontName "Consolas"
10145 alignment "left"
10146 anchor "tl"
10147 borderDistance 6
10148 ]
10149 ]
10150
10151 node
10152 [
10153 id 4
10154 graphics
10155 [
10156 w 41.800000000000004
10157 h 26
10158 type "rectangle"
10159 fill "#FFFFFF"
10160 fill2 "#FFFFFF"
10161 outline "#000000"
10162 ]
10163 LabelGraphics
10164 [
10165 text "true"
10166 outline "#000000"
10167 fill "#FFFFFF"
10168 fontSize 16
10169 fontName "Monospace"
10170 autoSizePolicy "node_width"
10171 anchor "t"
10172 borderDistance 0.0
10173 ]
10174 LabelGraphics
10175 [
10176 text "
10177 "
10178 fontSize 14
10179 fontName "Consolas"
10180 alignment "left"
10181 anchor "tl"
10182 borderDistance 6
10183 ]
10184 ]
10185
10186 node
10187 [
10188 id 5
10189 graphics
10190 [
10191 w 50.6
10192 h 26
10193 type "rectangle"
10194 fill "#FFFFFF"
10195 fill2 "#FFFFFF"
10196 outline "#000000"
10197 ]
10198 LabelGraphics
10199 [
10200 text "false"
10201 outline "#000000"
10202 fill "#FFFFFF"
10203 fontSize 16
10204 fontName "Monospace"
10205 autoSizePolicy "node_width"
10206 anchor "t"
10207 borderDistance 0.0
10208 ]
10209 LabelGraphics
10210 [
10211 text "
10212 "
10213 fontSize 14
10214 fontName "Consolas"
10215 alignment "left"
10216 anchor "tl"
10217 borderDistance 6
10218 ]
10219 ]
10220
10221 node
10222 [
10223 id 6
10224 graphics
10225 [
10226 w 192.50000000000003
10227 h 54
10228 type "rectangle"
10229 fill "#FFFFFF"
10230 fill2 "#FFFFFF"
10231 outline "#000000"
10232 ]
10233 LabelGraphics
10234 [
10235 text "null"
10236 outline "#000000"
10237 fill "#FFFFFF"
10238 fontSize 16
10239 fontName "Monospace"
10240 autoSizePolicy "node_width"
10241 anchor "t"
10242 borderDistance 0.0
10243 ]
10244 LabelGraphics
10245 [
10246 text "
10247 FunctionalElement class
10248 Function class
10249 "
10250 fontSize 14
10251 fontName "Consolas"
10252 alignment "left"
10253 anchor "tl"
10254 borderDistance 6
10255 ]
10256 ]
10257
10258 node
10259 [
10260 id 7
10261 graphics
10262 [
10263 w 207.9
10264 h 40
10265 type "rectangle"
10266 fill "#FFFFFF"
10267 fill2 "#FFFFFF"
10268 outline "#000000"
10269 ]
10270 LabelGraphics
10271 [
10272 text "null"
10273 outline "#000000"
10274 fill "#FFFFFF"
10275 fontSize 16
10276 fontName "Monospace"
10277 autoSizePolicy "node_width"
10278 anchor "t"
10279 borderDistance 0.0
10280 ]
10281 LabelGraphics
10282 [
10283 text "
10284 FunctionalInterface class
10285 "
10286 fontSize 14
10287 fontName "Consolas"
10288 alignment "left"
10289 anchor "tl"
10290 borderDistance 6
10291 ]
10292 ]
10293
10294 node
10295 [
10296 id 8
10297 graphics
10298 [
10299 w 184.8
10300 h 54
10301 type "rectangle"
10302 fill "#FFFFFF"
10303 fill2 "#FFFFFF"
10304 outline "#000000"
10305 ]
10306 LabelGraphics
10307 [
10308 text "null"
10309 outline "#000000"
10310 fill "#FFFFFF"
10311 fontSize 16
10312 fontName "Monospace"
10313 autoSizePolicy "node_width"
10314 anchor "t"
10315 borderDistance 0.0
10316 ]
10317 LabelGraphics
10318 [
10319 text "
10320 FunctionalOutput class
10321 FunctionalData class
10322 "
10323 fontSize 14
10324 fontName "Consolas"
10325 alignment "left"
10326 anchor "tl"
10327 borderDistance 6
10328 ]
10329 ]
10330
10331 node
10332 [
10333 id 9
10334 graphics
10335 [
10336 w 177.10000000000002
10337 h 40
10338 type "rectangle"
10339 fill "#FFFFFF"
10340 fill2 "#FFFFFF"
10341 outline "#000000"
10342 ]
10343 LabelGraphics
10344 [
10345 text "null"
10346 outline "#000000"
10347 fill "#FFFFFF"
10348 fontSize 16
10349 fontName "Monospace"
10350 autoSizePolicy "node_width"
10351 anchor "t"
10352 borderDistance 0.0
10353 ]
10354 LabelGraphics
10355 [
10356 text "
10357 InformationLink class
10358 "
10359 fontSize 14
10360 fontName "Consolas"
10361 alignment "left"
10362 anchor "tl"
10363 borderDistance 6
10364 ]
10365 ]
10366
10367 node
10368 [
10369 id 10
10370 graphics
10371 [
10372 w 177.10000000000002
10373 h 54
10374 type "rectangle"
10375 fill "#FFFFFF"
10376 fill2 "#FFFFFF"
10377 outline "#000000"
10378 ]
10379 LabelGraphics
10380 [
10381 text "null"
10382 outline "#000000"
10383 fill "#FFFFFF"
10384 fontSize 16
10385 fontName "Monospace"
10386 autoSizePolicy "node_width"
10387 anchor "t"
10388 borderDistance 0.0
10389 ]
10390 LabelGraphics
10391 [
10392 text "
10393 FunctionalInput class
10394 FunctionalData class
10395 "
10396 fontSize 14
10397 fontName "Consolas"
10398 alignment "left"
10399 anchor "tl"
10400 borderDistance 6
10401 ]
10402 ]
10403
10404 node
10405 [
10406 id 11
10407 graphics
10408 [
10409 w 184.8
10410 h 54
10411 type "rectangle"
10412 fill "#FFFFFF"
10413 fill2 "#FFFFFF"
10414 outline "#000000"
10415 ]
10416 LabelGraphics
10417 [
10418 text "null"
10419 outline "#000000"
10420 fill "#FFFFFF"
10421 fontSize 16
10422 fontName "Monospace"
10423 autoSizePolicy "node_width"
10424 anchor "t"
10425 borderDistance 0.0
10426 ]
10427 LabelGraphics
10428 [
10429 text "
10430 FunctionalOutput class
10431 FunctionalData class
10432 "
10433 fontSize 14
10434 fontName "Consolas"
10435 alignment "left"
10436 anchor "tl"
10437 borderDistance 6
10438 ]
10439 ]
10440
10441 node
10442 [
10443 id 12
10444 graphics
10445 [
10446 w 112.2
10447 h 26
10448 type "rectangle"
10449 fill "#FFFFFF"
10450 fill2 "#FFFFFF"
10451 outline "#000000"
10452 ]
10453 LabelGraphics
10454 [
10455 text "New Integers"
10456 outline "#000000"
10457 fill "#FFFFFF"
10458 fontSize 16
10459 fontName "Monospace"
10460 autoSizePolicy "node_width"
10461 anchor "t"
10462 borderDistance 0.0
10463 ]
10464 LabelGraphics
10465 [
10466 text "
10467 "
10468 fontSize 14
10469 fontName "Consolas"
10470 alignment "left"
10471 anchor "tl"
10472 borderDistance 6
10473 ]
10474 ]
10475
10476 node
10477 [
10478 id 13
10479 graphics
10480 [
10481 w 85.80000000000001
10482 h 26
10483 type "rectangle"
10484 fill "#FFFFFF"
10485 fill2 "#FFFFFF"
10486 outline "#000000"
10487 ]
10488 LabelGraphics
10489 [
10490 text "New Reals"
10491 outline "#000000"
10492 fill "#FFFFFF"
10493 fontSize 16
10494 fontName "Monospace"
10495 autoSizePolicy "node_width"
10496 anchor "t"
10497 borderDistance 0.0
10498 ]
10499 LabelGraphics
10500 [
10501 text "
10502 "
10503 fontSize 14
10504 fontName "Consolas"
10505 alignment "left"
10506 anchor "tl"
10507 borderDistance 6
10508 ]
10509 ]
10510
10511 node
10512 [
10513 id 14
10514 graphics
10515 [
10516 w 103.4
10517 h 26
10518 type "rectangle"
10519 fill "#FFFFFF"
10520 fill2 "#FFFFFF"
10521 outline "#000000"
10522 ]
10523 LabelGraphics
10524 [
10525 text "New Strings"
10526 outline "#000000"
10527 fill "#FFFFFF"
10528 fontSize 16
10529 fontName "Monospace"
10530 autoSizePolicy "node_width"
10531 anchor "t"
10532 borderDistance 0.0
10533 ]
10534 LabelGraphics
10535 [
10536 text "
10537 "
10538 fontSize 14
10539 fontName "Consolas"
10540 alignment "left"
10541 anchor "tl"
10542 borderDistance 6
10543 ]
10544 ]
10545
10546 node
10547 [
10548 id 15
10549 graphics
10550 [
10551 w 103.4
10552 h 26
10553 type "rectangle"
10554 fill "#FFFFFF"
10555 fill2 "#FFFFFF"
10556 outline "#000000"
10557 ]
10558 LabelGraphics
10559 [
10560 text "New Objects"
10561 outline "#000000"
10562 fill "#FFFFFF"
10563 fontSize 16
10564 fontName "Monospace"
10565 autoSizePolicy "node_width"
10566 anchor "t"
10567 borderDistance 0.0
10568 ]
10569 LabelGraphics
10570 [
10571 text "
10572 "
10573 fontSize 14
10574 fontName "Consolas"
10575 alignment "left"
10576 anchor "tl"
10577 borderDistance 6
10578 ]
10579 ]
10580 edge
10581 [
10582 source 6
10583 target 7
10584 graphics
10585 [
10586 fill "#000000"
10587 width 3
10588 targetArrow "standard"
10589 ]
10590 LabelGraphics
10591 [
10592 text "interface reference FunctionalElement"
10593 fontSize 14
10594 fontName "Consolas"
10595 configuration "AutoFlippingLabel"
10596 model "six_pos"
10597 position "thead"
10598 ]
10599 ]
10600 edge
10601 [
10602 source 6
10603 target 3
10604 graphics
10605 [
10606 fill "#000000"
10607 targetArrow "standard"
10608 ]
10609 LabelGraphics
10610 [
10611 text "model reference FunctionalElement"
10612 fontSize 14
10613 fontName "Consolas"
10614 configuration "AutoFlippingLabel"
10615 model "six_pos"
10616 position "thead"
10617 ]
10618 ]
10619 edge
10620 [
10621 source 3
10622 target 6
10623 graphics
10624 [
10625 fill "#000000"
10626 width 3
10627 targetArrow "standard"
10628 ]
10629 LabelGraphics
10630 [
10631 text "rootElements reference FunctionalArchitectureModel"
10632 fontSize 14
10633 fontName "Consolas"
10634 configuration "AutoFlippingLabel"
10635 model "six_pos"
10636 position "thead"
10637 ]
10638 ]
10639 edge
10640 [
10641 source 9
10642 target 8
10643 graphics
10644 [
10645 fill "#000000"
10646 targetArrow "standard"
10647 ]
10648 LabelGraphics
10649 [
10650 text "from reference InformationLink"
10651 fontSize 14
10652 fontName "Consolas"
10653 configuration "AutoFlippingLabel"
10654 model "six_pos"
10655 position "thead"
10656 ]
10657 ]
10658 edge
10659 [
10660 source 9
10661 target 10
10662 graphics
10663 [
10664 fill "#000000"
10665 targetArrow "standard"
10666 ]
10667 LabelGraphics
10668 [
10669 text "to reference InformationLink"
10670 fontSize 14
10671 fontName "Consolas"
10672 configuration "AutoFlippingLabel"
10673 model "six_pos"
10674 position "thead"
10675 ]
10676 ]
10677 edge
10678 [
10679 source 7
10680 target 8
10681 graphics
10682 [
10683 fill "#000000"
10684 width 3
10685 targetArrow "standard"
10686 ]
10687 LabelGraphics
10688 [
10689 text "data reference FunctionalInterface"
10690 fontSize 14
10691 fontName "Consolas"
10692 configuration "AutoFlippingLabel"
10693 model "six_pos"
10694 position "thead"
10695 ]
10696 ]
10697 edge
10698 [
10699 source 7
10700 target 10
10701 graphics
10702 [
10703 fill "#000000"
10704 width 3
10705 targetArrow "standard"
10706 ]
10707 LabelGraphics
10708 [
10709 text "data reference FunctionalInterface"
10710 fontSize 14
10711 fontName "Consolas"
10712 configuration "AutoFlippingLabel"
10713 model "six_pos"
10714 position "thead"
10715 ]
10716 ]
10717 edge
10718 [
10719 source 7
10720 target 11
10721 graphics
10722 [
10723 fill "#000000"
10724 width 3
10725 targetArrow "standard"
10726 ]
10727 LabelGraphics
10728 [
10729 text "data reference FunctionalInterface"
10730 fontSize 14
10731 fontName "Consolas"
10732 configuration "AutoFlippingLabel"
10733 model "six_pos"
10734 position "thead"
10735 ]
10736 ]
10737 edge
10738 [
10739 source 7
10740 target 6
10741 graphics
10742 [
10743 fill "#000000"
10744 targetArrow "standard"
10745 ]
10746 LabelGraphics
10747 [
10748 text "element reference FunctionalInterface"
10749 fontSize 14
10750 fontName "Consolas"
10751 configuration "AutoFlippingLabel"
10752 model "six_pos"
10753 position "thead"
10754 ]
10755 ]
10756 edge
10757 [
10758 source 10
10759 target 9
10760 graphics
10761 [
10762 fill "#000000"
10763 targetArrow "standard"
10764 ]
10765 LabelGraphics
10766 [
10767 text "IncomingLinks reference FunctionalInput"
10768 fontSize 14
10769 fontName "Consolas"
10770 configuration "AutoFlippingLabel"
10771 model "six_pos"
10772 position "thead"
10773 ]
10774 ]
10775 edge
10776 [
10777 source 8
10778 target 9
10779 graphics
10780 [
10781 fill "#000000"
10782 width 3
10783 targetArrow "standard"
10784 ]
10785 LabelGraphics
10786 [
10787 text "outgoingLinks reference FunctionalOutput"
10788 fontSize 14
10789 fontName "Consolas"
10790 configuration "AutoFlippingLabel"
10791 model "six_pos"
10792 position "thead"
10793 ]
10794 ]
10795 edge
10796 [
10797 source 8
10798 target 7
10799 graphics
10800 [
10801 fill "#000000"
10802 targetArrow "standard"
10803 ]
10804 LabelGraphics
10805 [
10806 text "interface reference FunctionalData"
10807 fontSize 14
10808 fontName "Consolas"
10809 configuration "AutoFlippingLabel"
10810 model "six_pos"
10811 position "thead"
10812 ]
10813 ]
10814 edge
10815 [
10816 source 10
10817 target 7
10818 graphics
10819 [
10820 fill "#000000"
10821 targetArrow "standard"
10822 ]
10823 LabelGraphics
10824 [
10825 text "interface reference FunctionalData"
10826 fontSize 14
10827 fontName "Consolas"
10828 configuration "AutoFlippingLabel"
10829 model "six_pos"
10830 position "thead"
10831 ]
10832 ]
10833 edge
10834 [
10835 source 11
10836 target 7
10837 graphics
10838 [
10839 fill "#000000"
10840 targetArrow "standard"
10841 ]
10842 LabelGraphics
10843 [
10844 text "interface reference FunctionalData"
10845 fontSize 14
10846 fontName "Consolas"
10847 configuration "AutoFlippingLabel"
10848 model "six_pos"
10849 position "thead"
10850 ]
10851 ]
10852 edge
10853 [
10854 source 6
10855 target 0
10856 graphics
10857 [
10858 fill "#000000"
10859 targetArrow "standard"
10860 ]
10861 LabelGraphics
10862 [
10863 text "type attribute Function"
10864 fontSize 14
10865 fontName "Consolas"
10866 configuration "AutoFlippingLabel"
10867 model "six_pos"
10868 position "thead"
10869 ]
10870 ]
10871]
10872graph
10873[
10874 node
10875 [
10876 id 0
10877 graphics
10878 [
10879 w 226.60000000000002
10880 h 40
10881 type "rectangle"
10882 fill "#FFFFFF"
10883 fill2 "#FFFFFF"
10884 outline "#000000"
10885 ]
10886 LabelGraphics
10887 [
10888 text "Root literal FunctionType"
10889 outline "#000000"
10890 fill "#FFFFFF"
10891 fontSize 16
10892 fontName "Monospace"
10893 autoSizePolicy "node_width"
10894 anchor "t"
10895 borderDistance 0.0
10896 ]
10897 LabelGraphics
10898 [
10899 text "
10900 FunctionType enum
10901 "
10902 fontSize 14
10903 fontName "Consolas"
10904 alignment "left"
10905 anchor "tl"
10906 borderDistance 6
10907 ]
10908 ]
10909
10910 node
10911 [
10912 id 1
10913 graphics
10914 [
10915 w 297.0
10916 h 40
10917 type "rectangle"
10918 fill "#FFFFFF"
10919 fill2 "#FFFFFF"
10920 outline "#000000"
10921 ]
10922 LabelGraphics
10923 [
10924 text "Intermediate literal FunctionType"
10925 outline "#000000"
10926 fill "#FFFFFF"
10927 fontSize 16
10928 fontName "Monospace"
10929 autoSizePolicy "node_width"
10930 anchor "t"
10931 borderDistance 0.0
10932 ]
10933 LabelGraphics
10934 [
10935 text "
10936 FunctionType enum
10937 "
10938 fontSize 14
10939 fontName "Consolas"
10940 alignment "left"
10941 anchor "tl"
10942 borderDistance 6
10943 ]
10944 ]
10945
10946 node
10947 [
10948 id 2
10949 graphics
10950 [
10951 w 226.60000000000002
10952 h 40
10953 type "rectangle"
10954 fill "#FFFFFF"
10955 fill2 "#FFFFFF"
10956 outline "#000000"
10957 ]
10958 LabelGraphics
10959 [
10960 text "Leaf literal FunctionType"
10961 outline "#000000"
10962 fill "#FFFFFF"
10963 fontSize 16
10964 fontName "Monospace"
10965 autoSizePolicy "node_width"
10966 anchor "t"
10967 borderDistance 0.0
10968 ]
10969 LabelGraphics
10970 [
10971 text "
10972 FunctionType enum
10973 "
10974 fontSize 14
10975 fontName "Consolas"
10976 alignment "left"
10977 anchor "tl"
10978 borderDistance 6
10979 ]
10980 ]
10981
10982 node
10983 [
10984 id 3
10985 graphics
10986 [
10987 w 361.90000000000003
10988 h 54
10989 type "rectangle"
10990 fill "#FFFFFF"
10991 fill2 "#FFFFFF"
10992 outline "#000000"
10993 ]
10994 LabelGraphics
10995 [
10996 text "o 1"
10997 outline "#000000"
10998 fill "#FFFFFF"
10999 fontSize 16
11000 fontName "Monospace"
11001 autoSizePolicy "node_width"
11002 anchor "t"
11003 borderDistance 0.0
11004 ]
11005 LabelGraphics
11006 [
11007 text "
11008 FunctionalArchitectureModel class DefinedPart
11009 FunctionalArchitectureModel class
11010 "
11011 fontSize 14
11012 fontName "Consolas"
11013 alignment "left"
11014 anchor "tl"
11015 borderDistance 6
11016 ]
11017 ]
11018
11019 node
11020 [
11021 id 4
11022 graphics
11023 [
11024 w 41.800000000000004
11025 h 26
11026 type "rectangle"
11027 fill "#FFFFFF"
11028 fill2 "#FFFFFF"
11029 outline "#000000"
11030 ]
11031 LabelGraphics
11032 [
11033 text "true"
11034 outline "#000000"
11035 fill "#FFFFFF"
11036 fontSize 16
11037 fontName "Monospace"
11038 autoSizePolicy "node_width"
11039 anchor "t"
11040 borderDistance 0.0
11041 ]
11042 LabelGraphics
11043 [
11044 text "
11045 "
11046 fontSize 14
11047 fontName "Consolas"
11048 alignment "left"
11049 anchor "tl"
11050 borderDistance 6
11051 ]
11052 ]
11053
11054 node
11055 [
11056 id 5
11057 graphics
11058 [
11059 w 50.6
11060 h 26
11061 type "rectangle"
11062 fill "#FFFFFF"
11063 fill2 "#FFFFFF"
11064 outline "#000000"
11065 ]
11066 LabelGraphics
11067 [
11068 text "false"
11069 outline "#000000"
11070 fill "#FFFFFF"
11071 fontSize 16
11072 fontName "Monospace"
11073 autoSizePolicy "node_width"
11074 anchor "t"
11075 borderDistance 0.0
11076 ]
11077 LabelGraphics
11078 [
11079 text "
11080 "
11081 fontSize 14
11082 fontName "Consolas"
11083 alignment "left"
11084 anchor "tl"
11085 borderDistance 6
11086 ]
11087 ]
11088
11089 node
11090 [
11091 id 6
11092 graphics
11093 [
11094 w 192.50000000000003
11095 h 54
11096 type "rectangle"
11097 fill "#FFFFFF"
11098 fill2 "#FFFFFF"
11099 outline "#000000"
11100 ]
11101 LabelGraphics
11102 [
11103 text "null"
11104 outline "#000000"
11105 fill "#FFFFFF"
11106 fontSize 16
11107 fontName "Monospace"
11108 autoSizePolicy "node_width"
11109 anchor "t"
11110 borderDistance 0.0
11111 ]
11112 LabelGraphics
11113 [
11114 text "
11115 FunctionalElement class
11116 Function class
11117 "
11118 fontSize 14
11119 fontName "Consolas"
11120 alignment "left"
11121 anchor "tl"
11122 borderDistance 6
11123 ]
11124 ]
11125
11126 node
11127 [
11128 id 7
11129 graphics
11130 [
11131 w 207.9
11132 h 40
11133 type "rectangle"
11134 fill "#FFFFFF"
11135 fill2 "#FFFFFF"
11136 outline "#000000"
11137 ]
11138 LabelGraphics
11139 [
11140 text "null"
11141 outline "#000000"
11142 fill "#FFFFFF"
11143 fontSize 16
11144 fontName "Monospace"
11145 autoSizePolicy "node_width"
11146 anchor "t"
11147 borderDistance 0.0
11148 ]
11149 LabelGraphics
11150 [
11151 text "
11152 FunctionalInterface class
11153 "
11154 fontSize 14
11155 fontName "Consolas"
11156 alignment "left"
11157 anchor "tl"
11158 borderDistance 6
11159 ]
11160 ]
11161
11162 node
11163 [
11164 id 8
11165 graphics
11166 [
11167 w 184.8
11168 h 54
11169 type "rectangle"
11170 fill "#FFFFFF"
11171 fill2 "#FFFFFF"
11172 outline "#000000"
11173 ]
11174 LabelGraphics
11175 [
11176 text "null"
11177 outline "#000000"
11178 fill "#FFFFFF"
11179 fontSize 16
11180 fontName "Monospace"
11181 autoSizePolicy "node_width"
11182 anchor "t"
11183 borderDistance 0.0
11184 ]
11185 LabelGraphics
11186 [
11187 text "
11188 FunctionalOutput class
11189 FunctionalData class
11190 "
11191 fontSize 14
11192 fontName "Consolas"
11193 alignment "left"
11194 anchor "tl"
11195 borderDistance 6
11196 ]
11197 ]
11198
11199 node
11200 [
11201 id 9
11202 graphics
11203 [
11204 w 161.70000000000002
11205 h 40
11206 type "rectangle"
11207 fill "#FFFFFF"
11208 fill2 "#FFFFFF"
11209 outline "#000000"
11210 ]
11211 LabelGraphics
11212 [
11213 text "null"
11214 outline "#000000"
11215 fill "#FFFFFF"
11216 fontSize 16
11217 fontName "Monospace"
11218 autoSizePolicy "node_width"
11219 anchor "t"
11220 borderDistance 0.0
11221 ]
11222 LabelGraphics
11223 [
11224 text "
11225 FAMTerminator class
11226 "
11227 fontSize 14
11228 fontName "Consolas"
11229 alignment "left"
11230 anchor "tl"
11231 borderDistance 6
11232 ]
11233 ]
11234
11235 node
11236 [
11237 id 10
11238 graphics
11239 [
11240 w 184.8
11241 h 54
11242 type "rectangle"
11243 fill "#FFFFFF"
11244 fill2 "#FFFFFF"
11245 outline "#000000"
11246 ]
11247 LabelGraphics
11248 [
11249 text "null"
11250 outline "#000000"
11251 fill "#FFFFFF"
11252 fontSize 16
11253 fontName "Monospace"
11254 autoSizePolicy "node_width"
11255 anchor "t"
11256 borderDistance 0.0
11257 ]
11258 LabelGraphics
11259 [
11260 text "
11261 FunctionalOutput class
11262 FunctionalData class
11263 "
11264 fontSize 14
11265 fontName "Consolas"
11266 alignment "left"
11267 anchor "tl"
11268 borderDistance 6
11269 ]
11270 ]
11271
11272 node
11273 [
11274 id 11
11275 graphics
11276 [
11277 w 184.8
11278 h 54
11279 type "rectangle"
11280 fill "#FFFFFF"
11281 fill2 "#FFFFFF"
11282 outline "#000000"
11283 ]
11284 LabelGraphics
11285 [
11286 text "null"
11287 outline "#000000"
11288 fill "#FFFFFF"
11289 fontSize 16
11290 fontName "Monospace"
11291 autoSizePolicy "node_width"
11292 anchor "t"
11293 borderDistance 0.0
11294 ]
11295 LabelGraphics
11296 [
11297 text "
11298 FunctionalOutput class
11299 FunctionalData class
11300 "
11301 fontSize 14
11302 fontName "Consolas"
11303 alignment "left"
11304 anchor "tl"
11305 borderDistance 6
11306 ]
11307 ]
11308
11309 node
11310 [
11311 id 12
11312 graphics
11313 [
11314 w 112.2
11315 h 26
11316 type "rectangle"
11317 fill "#FFFFFF"
11318 fill2 "#FFFFFF"
11319 outline "#000000"
11320 ]
11321 LabelGraphics
11322 [
11323 text "New Integers"
11324 outline "#000000"
11325 fill "#FFFFFF"
11326 fontSize 16
11327 fontName "Monospace"
11328 autoSizePolicy "node_width"
11329 anchor "t"
11330 borderDistance 0.0
11331 ]
11332 LabelGraphics
11333 [
11334 text "
11335 "
11336 fontSize 14
11337 fontName "Consolas"
11338 alignment "left"
11339 anchor "tl"
11340 borderDistance 6
11341 ]
11342 ]
11343
11344 node
11345 [
11346 id 13
11347 graphics
11348 [
11349 w 85.80000000000001
11350 h 26
11351 type "rectangle"
11352 fill "#FFFFFF"
11353 fill2 "#FFFFFF"
11354 outline "#000000"
11355 ]
11356 LabelGraphics
11357 [
11358 text "New Reals"
11359 outline "#000000"
11360 fill "#FFFFFF"
11361 fontSize 16
11362 fontName "Monospace"
11363 autoSizePolicy "node_width"
11364 anchor "t"
11365 borderDistance 0.0
11366 ]
11367 LabelGraphics
11368 [
11369 text "
11370 "
11371 fontSize 14
11372 fontName "Consolas"
11373 alignment "left"
11374 anchor "tl"
11375 borderDistance 6
11376 ]
11377 ]
11378
11379 node
11380 [
11381 id 14
11382 graphics
11383 [
11384 w 103.4
11385 h 26
11386 type "rectangle"
11387 fill "#FFFFFF"
11388 fill2 "#FFFFFF"
11389 outline "#000000"
11390 ]
11391 LabelGraphics
11392 [
11393 text "New Strings"
11394 outline "#000000"
11395 fill "#FFFFFF"
11396 fontSize 16
11397 fontName "Monospace"
11398 autoSizePolicy "node_width"
11399 anchor "t"
11400 borderDistance 0.0
11401 ]
11402 LabelGraphics
11403 [
11404 text "
11405 "
11406 fontSize 14
11407 fontName "Consolas"
11408 alignment "left"
11409 anchor "tl"
11410 borderDistance 6
11411 ]
11412 ]
11413
11414 node
11415 [
11416 id 15
11417 graphics
11418 [
11419 w 103.4
11420 h 26
11421 type "rectangle"
11422 fill "#FFFFFF"
11423 fill2 "#FFFFFF"
11424 outline "#000000"
11425 ]
11426 LabelGraphics
11427 [
11428 text "New Objects"
11429 outline "#000000"
11430 fill "#FFFFFF"
11431 fontSize 16
11432 fontName "Monospace"
11433 autoSizePolicy "node_width"
11434 anchor "t"
11435 borderDistance 0.0
11436 ]
11437 LabelGraphics
11438 [
11439 text "
11440 "
11441 fontSize 14
11442 fontName "Consolas"
11443 alignment "left"
11444 anchor "tl"
11445 borderDistance 6
11446 ]
11447 ]
11448 edge
11449 [
11450 source 6
11451 target 7
11452 graphics
11453 [
11454 fill "#000000"
11455 width 3
11456 targetArrow "standard"
11457 ]
11458 LabelGraphics
11459 [
11460 text "interface reference FunctionalElement"
11461 fontSize 14
11462 fontName "Consolas"
11463 configuration "AutoFlippingLabel"
11464 model "six_pos"
11465 position "thead"
11466 ]
11467 ]
11468 edge
11469 [
11470 source 6
11471 target 3
11472 graphics
11473 [
11474 fill "#000000"
11475 targetArrow "standard"
11476 ]
11477 LabelGraphics
11478 [
11479 text "model reference FunctionalElement"
11480 fontSize 14
11481 fontName "Consolas"
11482 configuration "AutoFlippingLabel"
11483 model "six_pos"
11484 position "thead"
11485 ]
11486 ]
11487 edge
11488 [
11489 source 3
11490 target 6
11491 graphics
11492 [
11493 fill "#000000"
11494 width 3
11495 targetArrow "standard"
11496 ]
11497 LabelGraphics
11498 [
11499 text "rootElements reference FunctionalArchitectureModel"
11500 fontSize 14
11501 fontName "Consolas"
11502 configuration "AutoFlippingLabel"
11503 model "six_pos"
11504 position "thead"
11505 ]
11506 ]
11507 edge
11508 [
11509 source 9
11510 target 8
11511 graphics
11512 [
11513 fill "#000000"
11514 targetArrow "standard"
11515 ]
11516 LabelGraphics
11517 [
11518 text "data reference FAMTerminator"
11519 fontSize 14
11520 fontName "Consolas"
11521 configuration "AutoFlippingLabel"
11522 model "six_pos"
11523 position "thead"
11524 ]
11525 ]
11526 edge
11527 [
11528 source 7
11529 target 8
11530 graphics
11531 [
11532 fill "#000000"
11533 width 3
11534 targetArrow "standard"
11535 ]
11536 LabelGraphics
11537 [
11538 text "data reference FunctionalInterface"
11539 fontSize 14
11540 fontName "Consolas"
11541 configuration "AutoFlippingLabel"
11542 model "six_pos"
11543 position "thead"
11544 ]
11545 ]
11546 edge
11547 [
11548 source 7
11549 target 10
11550 graphics
11551 [
11552 fill "#000000"
11553 width 3
11554 targetArrow "standard"
11555 ]
11556 LabelGraphics
11557 [
11558 text "data reference FunctionalInterface"
11559 fontSize 14
11560 fontName "Consolas"
11561 configuration "AutoFlippingLabel"
11562 model "six_pos"
11563 position "thead"
11564 ]
11565 ]
11566 edge
11567 [
11568 source 7
11569 target 11
11570 graphics
11571 [
11572 fill "#000000"
11573 width 3
11574 targetArrow "standard"
11575 ]
11576 LabelGraphics
11577 [
11578 text "data reference FunctionalInterface"
11579 fontSize 14
11580 fontName "Consolas"
11581 configuration "AutoFlippingLabel"
11582 model "six_pos"
11583 position "thead"
11584 ]
11585 ]
11586 edge
11587 [
11588 source 7
11589 target 6
11590 graphics
11591 [
11592 fill "#000000"
11593 targetArrow "standard"
11594 ]
11595 LabelGraphics
11596 [
11597 text "element reference FunctionalInterface"
11598 fontSize 14
11599 fontName "Consolas"
11600 configuration "AutoFlippingLabel"
11601 model "six_pos"
11602 position "thead"
11603 ]
11604 ]
11605 edge
11606 [
11607 source 8
11608 target 9
11609 graphics
11610 [
11611 fill "#000000"
11612 width 3
11613 targetArrow "standard"
11614 ]
11615 LabelGraphics
11616 [
11617 text "terminator reference FunctionalData"
11618 fontSize 14
11619 fontName "Consolas"
11620 configuration "AutoFlippingLabel"
11621 model "six_pos"
11622 position "thead"
11623 ]
11624 ]
11625 edge
11626 [
11627 source 8
11628 target 7
11629 graphics
11630 [
11631 fill "#000000"
11632 targetArrow "standard"
11633 ]
11634 LabelGraphics
11635 [
11636 text "interface reference FunctionalData"
11637 fontSize 14
11638 fontName "Consolas"
11639 configuration "AutoFlippingLabel"
11640 model "six_pos"
11641 position "thead"
11642 ]
11643 ]
11644 edge
11645 [
11646 source 10
11647 target 7
11648 graphics
11649 [
11650 fill "#000000"
11651 targetArrow "standard"
11652 ]
11653 LabelGraphics
11654 [
11655 text "interface reference FunctionalData"
11656 fontSize 14
11657 fontName "Consolas"
11658 configuration "AutoFlippingLabel"
11659 model "six_pos"
11660 position "thead"
11661 ]
11662 ]
11663 edge
11664 [
11665 source 11
11666 target 7
11667 graphics
11668 [
11669 fill "#000000"
11670 targetArrow "standard"
11671 ]
11672 LabelGraphics
11673 [
11674 text "interface reference FunctionalData"
11675 fontSize 14
11676 fontName "Consolas"
11677 configuration "AutoFlippingLabel"
11678 model "six_pos"
11679 position "thead"
11680 ]
11681 ]
11682 edge
11683 [
11684 source 6
11685 target 0
11686 graphics
11687 [
11688 fill "#000000"
11689 targetArrow "standard"
11690 ]
11691 LabelGraphics
11692 [
11693 text "type attribute Function"
11694 fontSize 14
11695 fontName "Consolas"
11696 configuration "AutoFlippingLabel"
11697 model "six_pos"
11698 position "thead"
11699 ]
11700 ]
11701]
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 05355ee6..0222b4b1 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi
index 956b6f1b..144e4fc5 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,11 +1,12 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<fam:FunctionalInterface xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel"> 2<fam:FunctionalArchitectureModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel">
3 <data xsi:type="fam:FunctionalOutput"/> 3 <rootElements xsi:type="fam:Function">
4 <data xsi:type="fam:FunctionalOutput"/> 4 <interface>
5 <data xsi:type="fam:FunctionalOutput"> 5 <data xsi:type="fam:FunctionalOutput"/>
6 <terminator/> 6 <data xsi:type="fam:FunctionalOutput"/>
7 </data> 7 <data xsi:type="fam:FunctionalOutput">
8 <data xsi:type="fam:FunctionalOutput"> 8 <terminator/>
9 <terminator/> 9 </data>
10 </data> 10 </interface>
11</fam:FunctionalInterface> 11 </rootElements>
12</fam:FunctionalArchitectureModel>
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 ed77ebc2..e046559b 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
@@ -8343,3 +8343,3320 @@ graph
8343 ] 8343 ]
8344 ] 8344 ]
8345] 8345]
8346graph
8347[
8348 node
8349 [
8350 id 0
8351 graphics
8352 [
8353 w 226.60000000000002
8354 h 40
8355 type "rectangle"
8356 fill "#FFFFFF"
8357 fill2 "#FFFFFF"
8358 outline "#000000"
8359 ]
8360 LabelGraphics
8361 [
8362 text "Root literal FunctionType"
8363 outline "#000000"
8364 fill "#FFFFFF"
8365 fontSize 16
8366 fontName "Monospace"
8367 autoSizePolicy "node_width"
8368 anchor "t"
8369 borderDistance 0.0
8370 ]
8371 LabelGraphics
8372 [
8373 text "
8374 FunctionType enum
8375 "
8376 fontSize 14
8377 fontName "Consolas"
8378 alignment "left"
8379 anchor "tl"
8380 borderDistance 6
8381 ]
8382 ]
8383
8384 node
8385 [
8386 id 1
8387 graphics
8388 [
8389 w 297.0
8390 h 40
8391 type "rectangle"
8392 fill "#FFFFFF"
8393 fill2 "#FFFFFF"
8394 outline "#000000"
8395 ]
8396 LabelGraphics
8397 [
8398 text "Intermediate literal FunctionType"
8399 outline "#000000"
8400 fill "#FFFFFF"
8401 fontSize 16
8402 fontName "Monospace"
8403 autoSizePolicy "node_width"
8404 anchor "t"
8405 borderDistance 0.0
8406 ]
8407 LabelGraphics
8408 [
8409 text "
8410 FunctionType enum
8411 "
8412 fontSize 14
8413 fontName "Consolas"
8414 alignment "left"
8415 anchor "tl"
8416 borderDistance 6
8417 ]
8418 ]
8419
8420 node
8421 [
8422 id 2
8423 graphics
8424 [
8425 w 226.60000000000002
8426 h 40
8427 type "rectangle"
8428 fill "#FFFFFF"
8429 fill2 "#FFFFFF"
8430 outline "#000000"
8431 ]
8432 LabelGraphics
8433 [
8434 text "Leaf literal FunctionType"
8435 outline "#000000"
8436 fill "#FFFFFF"
8437 fontSize 16
8438 fontName "Monospace"
8439 autoSizePolicy "node_width"
8440 anchor "t"
8441 borderDistance 0.0
8442 ]
8443 LabelGraphics
8444 [
8445 text "
8446 FunctionType enum
8447 "
8448 fontSize 14
8449 fontName "Consolas"
8450 alignment "left"
8451 anchor "tl"
8452 borderDistance 6
8453 ]
8454 ]
8455
8456 node
8457 [
8458 id 3
8459 graphics
8460 [
8461 w 41.800000000000004
8462 h 26
8463 type "rectangle"
8464 fill "#FFFFFF"
8465 fill2 "#FFFFFF"
8466 outline "#000000"
8467 ]
8468 LabelGraphics
8469 [
8470 text "true"
8471 outline "#000000"
8472 fill "#FFFFFF"
8473 fontSize 16
8474 fontName "Monospace"
8475 autoSizePolicy "node_width"
8476 anchor "t"
8477 borderDistance 0.0
8478 ]
8479 LabelGraphics
8480 [
8481 text "
8482 "
8483 fontSize 14
8484 fontName "Consolas"
8485 alignment "left"
8486 anchor "tl"
8487 borderDistance 6
8488 ]
8489 ]
8490
8491 node
8492 [
8493 id 4
8494 graphics
8495 [
8496 w 50.6
8497 h 26
8498 type "rectangle"
8499 fill "#FFFFFF"
8500 fill2 "#FFFFFF"
8501 outline "#000000"
8502 ]
8503 LabelGraphics
8504 [
8505 text "false"
8506 outline "#000000"
8507 fill "#FFFFFF"
8508 fontSize 16
8509 fontName "Monospace"
8510 autoSizePolicy "node_width"
8511 anchor "t"
8512 borderDistance 0.0
8513 ]
8514 LabelGraphics
8515 [
8516 text "
8517 "
8518 fontSize 14
8519 fontName "Consolas"
8520 alignment "left"
8521 anchor "tl"
8522 borderDistance 6
8523 ]
8524 ]
8525
8526 node
8527 [
8528 id 5
8529 graphics
8530 [
8531 w 207.9
8532 h 40
8533 type "rectangle"
8534 fill "#FFFFFF"
8535 fill2 "#FFFFFF"
8536 outline "#000000"
8537 ]
8538 LabelGraphics
8539 [
8540 text "null"
8541 outline "#000000"
8542 fill "#FFFFFF"
8543 fontSize 16
8544 fontName "Monospace"
8545 autoSizePolicy "node_width"
8546 anchor "t"
8547 borderDistance 0.0
8548 ]
8549 LabelGraphics
8550 [
8551 text "
8552 FunctionalInterface class
8553 "
8554 fontSize 14
8555 fontName "Consolas"
8556 alignment "left"
8557 anchor "tl"
8558 borderDistance 6
8559 ]
8560 ]
8561
8562 node
8563 [
8564 id 6
8565 graphics
8566 [
8567 w 184.8
8568 h 54
8569 type "rectangle"
8570 fill "#FFFFFF"
8571 fill2 "#FFFFFF"
8572 outline "#000000"
8573 ]
8574 LabelGraphics
8575 [
8576 text "null"
8577 outline "#000000"
8578 fill "#FFFFFF"
8579 fontSize 16
8580 fontName "Monospace"
8581 autoSizePolicy "node_width"
8582 anchor "t"
8583 borderDistance 0.0
8584 ]
8585 LabelGraphics
8586 [
8587 text "
8588 FunctionalOutput class
8589 FunctionalData class
8590 "
8591 fontSize 14
8592 fontName "Consolas"
8593 alignment "left"
8594 anchor "tl"
8595 borderDistance 6
8596 ]
8597 ]
8598
8599 node
8600 [
8601 id 7
8602 graphics
8603 [
8604 w 177.10000000000002
8605 h 54
8606 type "rectangle"
8607 fill "#FFFFFF"
8608 fill2 "#FFFFFF"
8609 outline "#000000"
8610 ]
8611 LabelGraphics
8612 [
8613 text "null"
8614 outline "#000000"
8615 fill "#FFFFFF"
8616 fontSize 16
8617 fontName "Monospace"
8618 autoSizePolicy "node_width"
8619 anchor "t"
8620 borderDistance 0.0
8621 ]
8622 LabelGraphics
8623 [
8624 text "
8625 FunctionalInput class
8626 FunctionalData class
8627 "
8628 fontSize 14
8629 fontName "Consolas"
8630 alignment "left"
8631 anchor "tl"
8632 borderDistance 6
8633 ]
8634 ]
8635
8636 node
8637 [
8638 id 8
8639 graphics
8640 [
8641 w 161.70000000000002
8642 h 40
8643 type "rectangle"
8644 fill "#FFFFFF"
8645 fill2 "#FFFFFF"
8646 outline "#000000"
8647 ]
8648 LabelGraphics
8649 [
8650 text "null"
8651 outline "#000000"
8652 fill "#FFFFFF"
8653 fontSize 16
8654 fontName "Monospace"
8655 autoSizePolicy "node_width"
8656 anchor "t"
8657 borderDistance 0.0
8658 ]
8659 LabelGraphics
8660 [
8661 text "
8662 FAMTerminator class
8663 "
8664 fontSize 14
8665 fontName "Consolas"
8666 alignment "left"
8667 anchor "tl"
8668 borderDistance 6
8669 ]
8670 ]
8671
8672 node
8673 [
8674 id 9
8675 graphics
8676 [
8677 w 184.8
8678 h 54
8679 type "rectangle"
8680 fill "#FFFFFF"
8681 fill2 "#FFFFFF"
8682 outline "#000000"
8683 ]
8684 LabelGraphics
8685 [
8686 text "null"
8687 outline "#000000"
8688 fill "#FFFFFF"
8689 fontSize 16
8690 fontName "Monospace"
8691 autoSizePolicy "node_width"
8692 anchor "t"
8693 borderDistance 0.0
8694 ]
8695 LabelGraphics
8696 [
8697 text "
8698 FunctionalOutput class
8699 FunctionalData class
8700 "
8701 fontSize 14
8702 fontName "Consolas"
8703 alignment "left"
8704 anchor "tl"
8705 borderDistance 6
8706 ]
8707 ]
8708
8709 node
8710 [
8711 id 10
8712 graphics
8713 [
8714 w 184.8
8715 h 54
8716 type "rectangle"
8717 fill "#FFFFFF"
8718 fill2 "#FFFFFF"
8719 outline "#000000"
8720 ]
8721 LabelGraphics
8722 [
8723 text "null"
8724 outline "#000000"
8725 fill "#FFFFFF"
8726 fontSize 16
8727 fontName "Monospace"
8728 autoSizePolicy "node_width"
8729 anchor "t"
8730 borderDistance 0.0
8731 ]
8732 LabelGraphics
8733 [
8734 text "
8735 FunctionalOutput class
8736 FunctionalData class
8737 "
8738 fontSize 14
8739 fontName "Consolas"
8740 alignment "left"
8741 anchor "tl"
8742 borderDistance 6
8743 ]
8744 ]
8745
8746 node
8747 [
8748 id 11
8749 graphics
8750 [
8751 w 177.10000000000002
8752 h 54
8753 type "rectangle"
8754 fill "#FFFFFF"
8755 fill2 "#FFFFFF"
8756 outline "#000000"
8757 ]
8758 LabelGraphics
8759 [
8760 text "null"
8761 outline "#000000"
8762 fill "#FFFFFF"
8763 fontSize 16
8764 fontName "Monospace"
8765 autoSizePolicy "node_width"
8766 anchor "t"
8767 borderDistance 0.0
8768 ]
8769 LabelGraphics
8770 [
8771 text "
8772 FunctionalInput class
8773 FunctionalData class
8774 "
8775 fontSize 14
8776 fontName "Consolas"
8777 alignment "left"
8778 anchor "tl"
8779 borderDistance 6
8780 ]
8781 ]
8782
8783 node
8784 [
8785 id 12
8786 graphics
8787 [
8788 w 112.2
8789 h 26
8790 type "rectangle"
8791 fill "#FFFFFF"
8792 fill2 "#FFFFFF"
8793 outline "#000000"
8794 ]
8795 LabelGraphics
8796 [
8797 text "New Integers"
8798 outline "#000000"
8799 fill "#FFFFFF"
8800 fontSize 16
8801 fontName "Monospace"
8802 autoSizePolicy "node_width"
8803 anchor "t"
8804 borderDistance 0.0
8805 ]
8806 LabelGraphics
8807 [
8808 text "
8809 "
8810 fontSize 14
8811 fontName "Consolas"
8812 alignment "left"
8813 anchor "tl"
8814 borderDistance 6
8815 ]
8816 ]
8817
8818 node
8819 [
8820 id 13
8821 graphics
8822 [
8823 w 85.80000000000001
8824 h 26
8825 type "rectangle"
8826 fill "#FFFFFF"
8827 fill2 "#FFFFFF"
8828 outline "#000000"
8829 ]
8830 LabelGraphics
8831 [
8832 text "New Reals"
8833 outline "#000000"
8834 fill "#FFFFFF"
8835 fontSize 16
8836 fontName "Monospace"
8837 autoSizePolicy "node_width"
8838 anchor "t"
8839 borderDistance 0.0
8840 ]
8841 LabelGraphics
8842 [
8843 text "
8844 "
8845 fontSize 14
8846 fontName "Consolas"
8847 alignment "left"
8848 anchor "tl"
8849 borderDistance 6
8850 ]
8851 ]
8852
8853 node
8854 [
8855 id 14
8856 graphics
8857 [
8858 w 103.4
8859 h 26
8860 type "rectangle"
8861 fill "#FFFFFF"
8862 fill2 "#FFFFFF"
8863 outline "#000000"
8864 ]
8865 LabelGraphics
8866 [
8867 text "New Strings"
8868 outline "#000000"
8869 fill "#FFFFFF"
8870 fontSize 16
8871 fontName "Monospace"
8872 autoSizePolicy "node_width"
8873 anchor "t"
8874 borderDistance 0.0
8875 ]
8876 LabelGraphics
8877 [
8878 text "
8879 "
8880 fontSize 14
8881 fontName "Consolas"
8882 alignment "left"
8883 anchor "tl"
8884 borderDistance 6
8885 ]
8886 ]
8887
8888 node
8889 [
8890 id 15
8891 graphics
8892 [
8893 w 103.4
8894 h 26
8895 type "rectangle"
8896 fill "#FFFFFF"
8897 fill2 "#FFFFFF"
8898 outline "#000000"
8899 ]
8900 LabelGraphics
8901 [
8902 text "New Objects"
8903 outline "#000000"
8904 fill "#FFFFFF"
8905 fontSize 16
8906 fontName "Monospace"
8907 autoSizePolicy "node_width"
8908 anchor "t"
8909 borderDistance 0.0
8910 ]
8911 LabelGraphics
8912 [
8913 text "
8914 "
8915 fontSize 14
8916 fontName "Consolas"
8917 alignment "left"
8918 anchor "tl"
8919 borderDistance 6
8920 ]
8921 ]
8922 edge
8923 [
8924 source 8
8925 target 6
8926 graphics
8927 [
8928 fill "#000000"
8929 targetArrow "standard"
8930 ]
8931 LabelGraphics
8932 [
8933 text "data reference FAMTerminator"
8934 fontSize 14
8935 fontName "Consolas"
8936 configuration "AutoFlippingLabel"
8937 model "six_pos"
8938 position "thead"
8939 ]
8940 ]
8941 edge
8942 [
8943 source 5
8944 target 6
8945 graphics
8946 [
8947 fill "#000000"
8948 width 3
8949 targetArrow "standard"
8950 ]
8951 LabelGraphics
8952 [
8953 text "data reference FunctionalInterface"
8954 fontSize 14
8955 fontName "Consolas"
8956 configuration "AutoFlippingLabel"
8957 model "six_pos"
8958 position "thead"
8959 ]
8960 ]
8961 edge
8962 [
8963 source 5
8964 target 7
8965 graphics
8966 [
8967 fill "#000000"
8968 width 3
8969 targetArrow "standard"
8970 ]
8971 LabelGraphics
8972 [
8973 text "data reference FunctionalInterface"
8974 fontSize 14
8975 fontName "Consolas"
8976 configuration "AutoFlippingLabel"
8977 model "six_pos"
8978 position "thead"
8979 ]
8980 ]
8981 edge
8982 [
8983 source 5
8984 target 9
8985 graphics
8986 [
8987 fill "#000000"
8988 width 3
8989 targetArrow "standard"
8990 ]
8991 LabelGraphics
8992 [
8993 text "data reference FunctionalInterface"
8994 fontSize 14
8995 fontName "Consolas"
8996 configuration "AutoFlippingLabel"
8997 model "six_pos"
8998 position "thead"
8999 ]
9000 ]
9001 edge
9002 [
9003 source 5
9004 target 10
9005 graphics
9006 [
9007 fill "#000000"
9008 width 3
9009 targetArrow "standard"
9010 ]
9011 LabelGraphics
9012 [
9013 text "data reference FunctionalInterface"
9014 fontSize 14
9015 fontName "Consolas"
9016 configuration "AutoFlippingLabel"
9017 model "six_pos"
9018 position "thead"
9019 ]
9020 ]
9021 edge
9022 [
9023 source 5
9024 target 11
9025 graphics
9026 [
9027 fill "#000000"
9028 width 3
9029 targetArrow "standard"
9030 ]
9031 LabelGraphics
9032 [
9033 text "data reference FunctionalInterface"
9034 fontSize 14
9035 fontName "Consolas"
9036 configuration "AutoFlippingLabel"
9037 model "six_pos"
9038 position "thead"
9039 ]
9040 ]
9041 edge
9042 [
9043 source 6
9044 target 8
9045 graphics
9046 [
9047 fill "#000000"
9048 width 3
9049 targetArrow "standard"
9050 ]
9051 LabelGraphics
9052 [
9053 text "terminator reference FunctionalData"
9054 fontSize 14
9055 fontName "Consolas"
9056 configuration "AutoFlippingLabel"
9057 model "six_pos"
9058 position "thead"
9059 ]
9060 ]
9061 edge
9062 [
9063 source 6
9064 target 5
9065 graphics
9066 [
9067 fill "#000000"
9068 targetArrow "standard"
9069 ]
9070 LabelGraphics
9071 [
9072 text "interface reference FunctionalData"
9073 fontSize 14
9074 fontName "Consolas"
9075 configuration "AutoFlippingLabel"
9076 model "six_pos"
9077 position "thead"
9078 ]
9079 ]
9080 edge
9081 [
9082 source 7
9083 target 5
9084 graphics
9085 [
9086 fill "#000000"
9087 targetArrow "standard"
9088 ]
9089 LabelGraphics
9090 [
9091 text "interface reference FunctionalData"
9092 fontSize 14
9093 fontName "Consolas"
9094 configuration "AutoFlippingLabel"
9095 model "six_pos"
9096 position "thead"
9097 ]
9098 ]
9099 edge
9100 [
9101 source 9
9102 target 5
9103 graphics
9104 [
9105 fill "#000000"
9106 targetArrow "standard"
9107 ]
9108 LabelGraphics
9109 [
9110 text "interface reference FunctionalData"
9111 fontSize 14
9112 fontName "Consolas"
9113 configuration "AutoFlippingLabel"
9114 model "six_pos"
9115 position "thead"
9116 ]
9117 ]
9118 edge
9119 [
9120 source 10
9121 target 5
9122 graphics
9123 [
9124 fill "#000000"
9125 targetArrow "standard"
9126 ]
9127 LabelGraphics
9128 [
9129 text "interface reference FunctionalData"
9130 fontSize 14
9131 fontName "Consolas"
9132 configuration "AutoFlippingLabel"
9133 model "six_pos"
9134 position "thead"
9135 ]
9136 ]
9137 edge
9138 [
9139 source 11
9140 target 5
9141 graphics
9142 [
9143 fill "#000000"
9144 targetArrow "standard"
9145 ]
9146 LabelGraphics
9147 [
9148 text "interface reference FunctionalData"
9149 fontSize 14
9150 fontName "Consolas"
9151 configuration "AutoFlippingLabel"
9152 model "six_pos"
9153 position "thead"
9154 ]
9155 ]
9156]
9157graph
9158[
9159 node
9160 [
9161 id 0
9162 graphics
9163 [
9164 w 226.60000000000002
9165 h 40
9166 type "rectangle"
9167 fill "#FFFFFF"
9168 fill2 "#FFFFFF"
9169 outline "#000000"
9170 ]
9171 LabelGraphics
9172 [
9173 text "Root literal FunctionType"
9174 outline "#000000"
9175 fill "#FFFFFF"
9176 fontSize 16
9177 fontName "Monospace"
9178 autoSizePolicy "node_width"
9179 anchor "t"
9180 borderDistance 0.0
9181 ]
9182 LabelGraphics
9183 [
9184 text "
9185 FunctionType enum
9186 "
9187 fontSize 14
9188 fontName "Consolas"
9189 alignment "left"
9190 anchor "tl"
9191 borderDistance 6
9192 ]
9193 ]
9194
9195 node
9196 [
9197 id 1
9198 graphics
9199 [
9200 w 297.0
9201 h 40
9202 type "rectangle"
9203 fill "#FFFFFF"
9204 fill2 "#FFFFFF"
9205 outline "#000000"
9206 ]
9207 LabelGraphics
9208 [
9209 text "Intermediate literal FunctionType"
9210 outline "#000000"
9211 fill "#FFFFFF"
9212 fontSize 16
9213 fontName "Monospace"
9214 autoSizePolicy "node_width"
9215 anchor "t"
9216 borderDistance 0.0
9217 ]
9218 LabelGraphics
9219 [
9220 text "
9221 FunctionType enum
9222 "
9223 fontSize 14
9224 fontName "Consolas"
9225 alignment "left"
9226 anchor "tl"
9227 borderDistance 6
9228 ]
9229 ]
9230
9231 node
9232 [
9233 id 2
9234 graphics
9235 [
9236 w 226.60000000000002
9237 h 40
9238 type "rectangle"
9239 fill "#FFFFFF"
9240 fill2 "#FFFFFF"
9241 outline "#000000"
9242 ]
9243 LabelGraphics
9244 [
9245 text "Leaf literal FunctionType"
9246 outline "#000000"
9247 fill "#FFFFFF"
9248 fontSize 16
9249 fontName "Monospace"
9250 autoSizePolicy "node_width"
9251 anchor "t"
9252 borderDistance 0.0
9253 ]
9254 LabelGraphics
9255 [
9256 text "
9257 FunctionType enum
9258 "
9259 fontSize 14
9260 fontName "Consolas"
9261 alignment "left"
9262 anchor "tl"
9263 borderDistance 6
9264 ]
9265 ]
9266
9267 node
9268 [
9269 id 3
9270 graphics
9271 [
9272 w 41.800000000000004
9273 h 26
9274 type "rectangle"
9275 fill "#FFFFFF"
9276 fill2 "#FFFFFF"
9277 outline "#000000"
9278 ]
9279 LabelGraphics
9280 [
9281 text "true"
9282 outline "#000000"
9283 fill "#FFFFFF"
9284 fontSize 16
9285 fontName "Monospace"
9286 autoSizePolicy "node_width"
9287 anchor "t"
9288 borderDistance 0.0
9289 ]
9290 LabelGraphics
9291 [
9292 text "
9293 "
9294 fontSize 14
9295 fontName "Consolas"
9296 alignment "left"
9297 anchor "tl"
9298 borderDistance 6
9299 ]
9300 ]
9301
9302 node
9303 [
9304 id 4
9305 graphics
9306 [
9307 w 50.6
9308 h 26
9309 type "rectangle"
9310 fill "#FFFFFF"
9311 fill2 "#FFFFFF"
9312 outline "#000000"
9313 ]
9314 LabelGraphics
9315 [
9316 text "false"
9317 outline "#000000"
9318 fill "#FFFFFF"
9319 fontSize 16
9320 fontName "Monospace"
9321 autoSizePolicy "node_width"
9322 anchor "t"
9323 borderDistance 0.0
9324 ]
9325 LabelGraphics
9326 [
9327 text "
9328 "
9329 fontSize 14
9330 fontName "Consolas"
9331 alignment "left"
9332 anchor "tl"
9333 borderDistance 6
9334 ]
9335 ]
9336
9337 node
9338 [
9339 id 5
9340 graphics
9341 [
9342 w 207.9
9343 h 40
9344 type "rectangle"
9345 fill "#FFFFFF"
9346 fill2 "#FFFFFF"
9347 outline "#000000"
9348 ]
9349 LabelGraphics
9350 [
9351 text "null"
9352 outline "#000000"
9353 fill "#FFFFFF"
9354 fontSize 16
9355 fontName "Monospace"
9356 autoSizePolicy "node_width"
9357 anchor "t"
9358 borderDistance 0.0
9359 ]
9360 LabelGraphics
9361 [
9362 text "
9363 FunctionalInterface class
9364 "
9365 fontSize 14
9366 fontName "Consolas"
9367 alignment "left"
9368 anchor "tl"
9369 borderDistance 6
9370 ]
9371 ]
9372
9373 node
9374 [
9375 id 6
9376 graphics
9377 [
9378 w 177.10000000000002
9379 h 54
9380 type "rectangle"
9381 fill "#FFFFFF"
9382 fill2 "#FFFFFF"
9383 outline "#000000"
9384 ]
9385 LabelGraphics
9386 [
9387 text "null"
9388 outline "#000000"
9389 fill "#FFFFFF"
9390 fontSize 16
9391 fontName "Monospace"
9392 autoSizePolicy "node_width"
9393 anchor "t"
9394 borderDistance 0.0
9395 ]
9396 LabelGraphics
9397 [
9398 text "
9399 FunctionalInput class
9400 FunctionalData class
9401 "
9402 fontSize 14
9403 fontName "Consolas"
9404 alignment "left"
9405 anchor "tl"
9406 borderDistance 6
9407 ]
9408 ]
9409
9410 node
9411 [
9412 id 7
9413 graphics
9414 [
9415 w 177.10000000000002
9416 h 54
9417 type "rectangle"
9418 fill "#FFFFFF"
9419 fill2 "#FFFFFF"
9420 outline "#000000"
9421 ]
9422 LabelGraphics
9423 [
9424 text "null"
9425 outline "#000000"
9426 fill "#FFFFFF"
9427 fontSize 16
9428 fontName "Monospace"
9429 autoSizePolicy "node_width"
9430 anchor "t"
9431 borderDistance 0.0
9432 ]
9433 LabelGraphics
9434 [
9435 text "
9436 FunctionalInput class
9437 FunctionalData class
9438 "
9439 fontSize 14
9440 fontName "Consolas"
9441 alignment "left"
9442 anchor "tl"
9443 borderDistance 6
9444 ]
9445 ]
9446
9447 node
9448 [
9449 id 8
9450 graphics
9451 [
9452 w 177.10000000000002
9453 h 54
9454 type "rectangle"
9455 fill "#FFFFFF"
9456 fill2 "#FFFFFF"
9457 outline "#000000"
9458 ]
9459 LabelGraphics
9460 [
9461 text "null"
9462 outline "#000000"
9463 fill "#FFFFFF"
9464 fontSize 16
9465 fontName "Monospace"
9466 autoSizePolicy "node_width"
9467 anchor "t"
9468 borderDistance 0.0
9469 ]
9470 LabelGraphics
9471 [
9472 text "
9473 FunctionalInput class
9474 FunctionalData class
9475 "
9476 fontSize 14
9477 fontName "Consolas"
9478 alignment "left"
9479 anchor "tl"
9480 borderDistance 6
9481 ]
9482 ]
9483
9484 node
9485 [
9486 id 9
9487 graphics
9488 [
9489 w 161.70000000000002
9490 h 40
9491 type "rectangle"
9492 fill "#FFFFFF"
9493 fill2 "#FFFFFF"
9494 outline "#000000"
9495 ]
9496 LabelGraphics
9497 [
9498 text "null"
9499 outline "#000000"
9500 fill "#FFFFFF"
9501 fontSize 16
9502 fontName "Monospace"
9503 autoSizePolicy "node_width"
9504 anchor "t"
9505 borderDistance 0.0
9506 ]
9507 LabelGraphics
9508 [
9509 text "
9510 FAMTerminator class
9511 "
9512 fontSize 14
9513 fontName "Consolas"
9514 alignment "left"
9515 anchor "tl"
9516 borderDistance 6
9517 ]
9518 ]
9519
9520 node
9521 [
9522 id 10
9523 graphics
9524 [
9525 w 161.70000000000002
9526 h 40
9527 type "rectangle"
9528 fill "#FFFFFF"
9529 fill2 "#FFFFFF"
9530 outline "#000000"
9531 ]
9532 LabelGraphics
9533 [
9534 text "null"
9535 outline "#000000"
9536 fill "#FFFFFF"
9537 fontSize 16
9538 fontName "Monospace"
9539 autoSizePolicy "node_width"
9540 anchor "t"
9541 borderDistance 0.0
9542 ]
9543 LabelGraphics
9544 [
9545 text "
9546 FAMTerminator class
9547 "
9548 fontSize 14
9549 fontName "Consolas"
9550 alignment "left"
9551 anchor "tl"
9552 borderDistance 6
9553 ]
9554 ]
9555
9556 node
9557 [
9558 id 11
9559 graphics
9560 [
9561 w 161.70000000000002
9562 h 40
9563 type "rectangle"
9564 fill "#FFFFFF"
9565 fill2 "#FFFFFF"
9566 outline "#000000"
9567 ]
9568 LabelGraphics
9569 [
9570 text "null"
9571 outline "#000000"
9572 fill "#FFFFFF"
9573 fontSize 16
9574 fontName "Monospace"
9575 autoSizePolicy "node_width"
9576 anchor "t"
9577 borderDistance 0.0
9578 ]
9579 LabelGraphics
9580 [
9581 text "
9582 FAMTerminator class
9583 "
9584 fontSize 14
9585 fontName "Consolas"
9586 alignment "left"
9587 anchor "tl"
9588 borderDistance 6
9589 ]
9590 ]
9591
9592 node
9593 [
9594 id 12
9595 graphics
9596 [
9597 w 112.2
9598 h 26
9599 type "rectangle"
9600 fill "#FFFFFF"
9601 fill2 "#FFFFFF"
9602 outline "#000000"
9603 ]
9604 LabelGraphics
9605 [
9606 text "New Integers"
9607 outline "#000000"
9608 fill "#FFFFFF"
9609 fontSize 16
9610 fontName "Monospace"
9611 autoSizePolicy "node_width"
9612 anchor "t"
9613 borderDistance 0.0
9614 ]
9615 LabelGraphics
9616 [
9617 text "
9618 "
9619 fontSize 14
9620 fontName "Consolas"
9621 alignment "left"
9622 anchor "tl"
9623 borderDistance 6
9624 ]
9625 ]
9626
9627 node
9628 [
9629 id 13
9630 graphics
9631 [
9632 w 85.80000000000001
9633 h 26
9634 type "rectangle"
9635 fill "#FFFFFF"
9636 fill2 "#FFFFFF"
9637 outline "#000000"
9638 ]
9639 LabelGraphics
9640 [
9641 text "New Reals"
9642 outline "#000000"
9643 fill "#FFFFFF"
9644 fontSize 16
9645 fontName "Monospace"
9646 autoSizePolicy "node_width"
9647 anchor "t"
9648 borderDistance 0.0
9649 ]
9650 LabelGraphics
9651 [
9652 text "
9653 "
9654 fontSize 14
9655 fontName "Consolas"
9656 alignment "left"
9657 anchor "tl"
9658 borderDistance 6
9659 ]
9660 ]
9661
9662 node
9663 [
9664 id 14
9665 graphics
9666 [
9667 w 103.4
9668 h 26
9669 type "rectangle"
9670 fill "#FFFFFF"
9671 fill2 "#FFFFFF"
9672 outline "#000000"
9673 ]
9674 LabelGraphics
9675 [
9676 text "New Strings"
9677 outline "#000000"
9678 fill "#FFFFFF"
9679 fontSize 16
9680 fontName "Monospace"
9681 autoSizePolicy "node_width"
9682 anchor "t"
9683 borderDistance 0.0
9684 ]
9685 LabelGraphics
9686 [
9687 text "
9688 "
9689 fontSize 14
9690 fontName "Consolas"
9691 alignment "left"
9692 anchor "tl"
9693 borderDistance 6
9694 ]
9695 ]
9696
9697 node
9698 [
9699 id 15
9700 graphics
9701 [
9702 w 103.4
9703 h 26
9704 type "rectangle"
9705 fill "#FFFFFF"
9706 fill2 "#FFFFFF"
9707 outline "#000000"
9708 ]
9709 LabelGraphics
9710 [
9711 text "New Objects"
9712 outline "#000000"
9713 fill "#FFFFFF"
9714 fontSize 16
9715 fontName "Monospace"
9716 autoSizePolicy "node_width"
9717 anchor "t"
9718 borderDistance 0.0
9719 ]
9720 LabelGraphics
9721 [
9722 text "
9723 "
9724 fontSize 14
9725 fontName "Consolas"
9726 alignment "left"
9727 anchor "tl"
9728 borderDistance 6
9729 ]
9730 ]
9731 edge
9732 [
9733 source 9
9734 target 8
9735 graphics
9736 [
9737 fill "#000000"
9738 targetArrow "standard"
9739 ]
9740 LabelGraphics
9741 [
9742 text "data reference FAMTerminator"
9743 fontSize 14
9744 fontName "Consolas"
9745 configuration "AutoFlippingLabel"
9746 model "six_pos"
9747 position "thead"
9748 ]
9749 ]
9750 edge
9751 [
9752 source 10
9753 target 6
9754 graphics
9755 [
9756 fill "#000000"
9757 targetArrow "standard"
9758 ]
9759 LabelGraphics
9760 [
9761 text "data reference FAMTerminator"
9762 fontSize 14
9763 fontName "Consolas"
9764 configuration "AutoFlippingLabel"
9765 model "six_pos"
9766 position "thead"
9767 ]
9768 ]
9769 edge
9770 [
9771 source 11
9772 target 7
9773 graphics
9774 [
9775 fill "#000000"
9776 targetArrow "standard"
9777 ]
9778 LabelGraphics
9779 [
9780 text "data reference FAMTerminator"
9781 fontSize 14
9782 fontName "Consolas"
9783 configuration "AutoFlippingLabel"
9784 model "six_pos"
9785 position "thead"
9786 ]
9787 ]
9788 edge
9789 [
9790 source 5
9791 target 6
9792 graphics
9793 [
9794 fill "#000000"
9795 width 3
9796 targetArrow "standard"
9797 ]
9798 LabelGraphics
9799 [
9800 text "data reference FunctionalInterface"
9801 fontSize 14
9802 fontName "Consolas"
9803 configuration "AutoFlippingLabel"
9804 model "six_pos"
9805 position "thead"
9806 ]
9807 ]
9808 edge
9809 [
9810 source 5
9811 target 7
9812 graphics
9813 [
9814 fill "#000000"
9815 width 3
9816 targetArrow "standard"
9817 ]
9818 LabelGraphics
9819 [
9820 text "data reference FunctionalInterface"
9821 fontSize 14
9822 fontName "Consolas"
9823 configuration "AutoFlippingLabel"
9824 model "six_pos"
9825 position "thead"
9826 ]
9827 ]
9828 edge
9829 [
9830 source 5
9831 target 8
9832 graphics
9833 [
9834 fill "#000000"
9835 width 3
9836 targetArrow "standard"
9837 ]
9838 LabelGraphics
9839 [
9840 text "data reference FunctionalInterface"
9841 fontSize 14
9842 fontName "Consolas"
9843 configuration "AutoFlippingLabel"
9844 model "six_pos"
9845 position "thead"
9846 ]
9847 ]
9848 edge
9849 [
9850 source 8
9851 target 9
9852 graphics
9853 [
9854 fill "#000000"
9855 width 3
9856 targetArrow "standard"
9857 ]
9858 LabelGraphics
9859 [
9860 text "terminator reference FunctionalData"
9861 fontSize 14
9862 fontName "Consolas"
9863 configuration "AutoFlippingLabel"
9864 model "six_pos"
9865 position "thead"
9866 ]
9867 ]
9868 edge
9869 [
9870 source 6
9871 target 10
9872 graphics
9873 [
9874 fill "#000000"
9875 width 3
9876 targetArrow "standard"
9877 ]
9878 LabelGraphics
9879 [
9880 text "terminator reference FunctionalData"
9881 fontSize 14
9882 fontName "Consolas"
9883 configuration "AutoFlippingLabel"
9884 model "six_pos"
9885 position "thead"
9886 ]
9887 ]
9888 edge
9889 [
9890 source 7
9891 target 11
9892 graphics
9893 [
9894 fill "#000000"
9895 width 3
9896 targetArrow "standard"
9897 ]
9898 LabelGraphics
9899 [
9900 text "terminator reference FunctionalData"
9901 fontSize 14
9902 fontName "Consolas"
9903 configuration "AutoFlippingLabel"
9904 model "six_pos"
9905 position "thead"
9906 ]
9907 ]
9908 edge
9909 [
9910 source 6
9911 target 5
9912 graphics
9913 [
9914 fill "#000000"
9915 targetArrow "standard"
9916 ]
9917 LabelGraphics
9918 [
9919 text "interface reference FunctionalData"
9920 fontSize 14
9921 fontName "Consolas"
9922 configuration "AutoFlippingLabel"
9923 model "six_pos"
9924 position "thead"
9925 ]
9926 ]
9927 edge
9928 [
9929 source 7
9930 target 5
9931 graphics
9932 [
9933 fill "#000000"
9934 targetArrow "standard"
9935 ]
9936 LabelGraphics
9937 [
9938 text "interface reference FunctionalData"
9939 fontSize 14
9940 fontName "Consolas"
9941 configuration "AutoFlippingLabel"
9942 model "six_pos"
9943 position "thead"
9944 ]
9945 ]
9946 edge
9947 [
9948 source 8
9949 target 5
9950 graphics
9951 [
9952 fill "#000000"
9953 targetArrow "standard"
9954 ]
9955 LabelGraphics
9956 [
9957 text "interface reference FunctionalData"
9958 fontSize 14
9959 fontName "Consolas"
9960 configuration "AutoFlippingLabel"
9961 model "six_pos"
9962 position "thead"
9963 ]
9964 ]
9965]
9966graph
9967[
9968 node
9969 [
9970 id 0
9971 graphics
9972 [
9973 w 226.60000000000002
9974 h 40
9975 type "rectangle"
9976 fill "#FFFFFF"
9977 fill2 "#FFFFFF"
9978 outline "#000000"
9979 ]
9980 LabelGraphics
9981 [
9982 text "Root literal FunctionType"
9983 outline "#000000"
9984 fill "#FFFFFF"
9985 fontSize 16
9986 fontName "Monospace"
9987 autoSizePolicy "node_width"
9988 anchor "t"
9989 borderDistance 0.0
9990 ]
9991 LabelGraphics
9992 [
9993 text "
9994 FunctionType enum
9995 "
9996 fontSize 14
9997 fontName "Consolas"
9998 alignment "left"
9999 anchor "tl"
10000 borderDistance 6
10001 ]
10002 ]
10003
10004 node
10005 [
10006 id 1
10007 graphics
10008 [
10009 w 297.0
10010 h 40
10011 type "rectangle"
10012 fill "#FFFFFF"
10013 fill2 "#FFFFFF"
10014 outline "#000000"
10015 ]
10016 LabelGraphics
10017 [
10018 text "Intermediate literal FunctionType"
10019 outline "#000000"
10020 fill "#FFFFFF"
10021 fontSize 16
10022 fontName "Monospace"
10023 autoSizePolicy "node_width"
10024 anchor "t"
10025 borderDistance 0.0
10026 ]
10027 LabelGraphics
10028 [
10029 text "
10030 FunctionType enum
10031 "
10032 fontSize 14
10033 fontName "Consolas"
10034 alignment "left"
10035 anchor "tl"
10036 borderDistance 6
10037 ]
10038 ]
10039
10040 node
10041 [
10042 id 2
10043 graphics
10044 [
10045 w 226.60000000000002
10046 h 40
10047 type "rectangle"
10048 fill "#FFFFFF"
10049 fill2 "#FFFFFF"
10050 outline "#000000"
10051 ]
10052 LabelGraphics
10053 [
10054 text "Leaf literal FunctionType"
10055 outline "#000000"
10056 fill "#FFFFFF"
10057 fontSize 16
10058 fontName "Monospace"
10059 autoSizePolicy "node_width"
10060 anchor "t"
10061 borderDistance 0.0
10062 ]
10063 LabelGraphics
10064 [
10065 text "
10066 FunctionType enum
10067 "
10068 fontSize 14
10069 fontName "Consolas"
10070 alignment "left"
10071 anchor "tl"
10072 borderDistance 6
10073 ]
10074 ]
10075
10076 node
10077 [
10078 id 3
10079 graphics
10080 [
10081 w 361.90000000000003
10082 h 54
10083 type "rectangle"
10084 fill "#FFFFFF"
10085 fill2 "#FFFFFF"
10086 outline "#000000"
10087 ]
10088 LabelGraphics
10089 [
10090 text "o 1"
10091 outline "#000000"
10092 fill "#FFFFFF"
10093 fontSize 16
10094 fontName "Monospace"
10095 autoSizePolicy "node_width"
10096 anchor "t"
10097 borderDistance 0.0
10098 ]
10099 LabelGraphics
10100 [
10101 text "
10102 FunctionalArchitectureModel class DefinedPart
10103 FunctionalArchitectureModel class
10104 "
10105 fontSize 14
10106 fontName "Consolas"
10107 alignment "left"
10108 anchor "tl"
10109 borderDistance 6
10110 ]
10111 ]
10112
10113 node
10114 [
10115 id 4
10116 graphics
10117 [
10118 w 41.800000000000004
10119 h 26
10120 type "rectangle"
10121 fill "#FFFFFF"
10122 fill2 "#FFFFFF"
10123 outline "#000000"
10124 ]
10125 LabelGraphics
10126 [
10127 text "true"
10128 outline "#000000"
10129 fill "#FFFFFF"
10130 fontSize 16
10131 fontName "Monospace"
10132 autoSizePolicy "node_width"
10133 anchor "t"
10134 borderDistance 0.0
10135 ]
10136 LabelGraphics
10137 [
10138 text "
10139 "
10140 fontSize 14
10141 fontName "Consolas"
10142 alignment "left"
10143 anchor "tl"
10144 borderDistance 6
10145 ]
10146 ]
10147
10148 node
10149 [
10150 id 5
10151 graphics
10152 [
10153 w 50.6
10154 h 26
10155 type "rectangle"
10156 fill "#FFFFFF"
10157 fill2 "#FFFFFF"
10158 outline "#000000"
10159 ]
10160 LabelGraphics
10161 [
10162 text "false"
10163 outline "#000000"
10164 fill "#FFFFFF"
10165 fontSize 16
10166 fontName "Monospace"
10167 autoSizePolicy "node_width"
10168 anchor "t"
10169 borderDistance 0.0
10170 ]
10171 LabelGraphics
10172 [
10173 text "
10174 "
10175 fontSize 14
10176 fontName "Consolas"
10177 alignment "left"
10178 anchor "tl"
10179 borderDistance 6
10180 ]
10181 ]
10182
10183 node
10184 [
10185 id 6
10186 graphics
10187 [
10188 w 192.50000000000003
10189 h 54
10190 type "rectangle"
10191 fill "#FFFFFF"
10192 fill2 "#FFFFFF"
10193 outline "#000000"
10194 ]
10195 LabelGraphics
10196 [
10197 text "null"
10198 outline "#000000"
10199 fill "#FFFFFF"
10200 fontSize 16
10201 fontName "Monospace"
10202 autoSizePolicy "node_width"
10203 anchor "t"
10204 borderDistance 0.0
10205 ]
10206 LabelGraphics
10207 [
10208 text "
10209 FunctionalElement class
10210 Function class
10211 "
10212 fontSize 14
10213 fontName "Consolas"
10214 alignment "left"
10215 anchor "tl"
10216 borderDistance 6
10217 ]
10218 ]
10219
10220 node
10221 [
10222 id 7
10223 graphics
10224 [
10225 w 207.9
10226 h 40
10227 type "rectangle"
10228 fill "#FFFFFF"
10229 fill2 "#FFFFFF"
10230 outline "#000000"
10231 ]
10232 LabelGraphics
10233 [
10234 text "null"
10235 outline "#000000"
10236 fill "#FFFFFF"
10237 fontSize 16
10238 fontName "Monospace"
10239 autoSizePolicy "node_width"
10240 anchor "t"
10241 borderDistance 0.0
10242 ]
10243 LabelGraphics
10244 [
10245 text "
10246 FunctionalInterface class
10247 "
10248 fontSize 14
10249 fontName "Consolas"
10250 alignment "left"
10251 anchor "tl"
10252 borderDistance 6
10253 ]
10254 ]
10255
10256 node
10257 [
10258 id 8
10259 graphics
10260 [
10261 w 184.8
10262 h 54
10263 type "rectangle"
10264 fill "#FFFFFF"
10265 fill2 "#FFFFFF"
10266 outline "#000000"
10267 ]
10268 LabelGraphics
10269 [
10270 text "null"
10271 outline "#000000"
10272 fill "#FFFFFF"
10273 fontSize 16
10274 fontName "Monospace"
10275 autoSizePolicy "node_width"
10276 anchor "t"
10277 borderDistance 0.0
10278 ]
10279 LabelGraphics
10280 [
10281 text "
10282 FunctionalOutput class
10283 FunctionalData class
10284 "
10285 fontSize 14
10286 fontName "Consolas"
10287 alignment "left"
10288 anchor "tl"
10289 borderDistance 6
10290 ]
10291 ]
10292
10293 node
10294 [
10295 id 9
10296 graphics
10297 [
10298 w 177.10000000000002
10299 h 40
10300 type "rectangle"
10301 fill "#FFFFFF"
10302 fill2 "#FFFFFF"
10303 outline "#000000"
10304 ]
10305 LabelGraphics
10306 [
10307 text "null"
10308 outline "#000000"
10309 fill "#FFFFFF"
10310 fontSize 16
10311 fontName "Monospace"
10312 autoSizePolicy "node_width"
10313 anchor "t"
10314 borderDistance 0.0
10315 ]
10316 LabelGraphics
10317 [
10318 text "
10319 InformationLink class
10320 "
10321 fontSize 14
10322 fontName "Consolas"
10323 alignment "left"
10324 anchor "tl"
10325 borderDistance 6
10326 ]
10327 ]
10328
10329 node
10330 [
10331 id 10
10332 graphics
10333 [
10334 w 177.10000000000002
10335 h 54
10336 type "rectangle"
10337 fill "#FFFFFF"
10338 fill2 "#FFFFFF"
10339 outline "#000000"
10340 ]
10341 LabelGraphics
10342 [
10343 text "null"
10344 outline "#000000"
10345 fill "#FFFFFF"
10346 fontSize 16
10347 fontName "Monospace"
10348 autoSizePolicy "node_width"
10349 anchor "t"
10350 borderDistance 0.0
10351 ]
10352 LabelGraphics
10353 [
10354 text "
10355 FunctionalInput class
10356 FunctionalData class
10357 "
10358 fontSize 14
10359 fontName "Consolas"
10360 alignment "left"
10361 anchor "tl"
10362 borderDistance 6
10363 ]
10364 ]
10365
10366 node
10367 [
10368 id 11
10369 graphics
10370 [
10371 w 161.70000000000002
10372 h 40
10373 type "rectangle"
10374 fill "#FFFFFF"
10375 fill2 "#FFFFFF"
10376 outline "#000000"
10377 ]
10378 LabelGraphics
10379 [
10380 text "null"
10381 outline "#000000"
10382 fill "#FFFFFF"
10383 fontSize 16
10384 fontName "Monospace"
10385 autoSizePolicy "node_width"
10386 anchor "t"
10387 borderDistance 0.0
10388 ]
10389 LabelGraphics
10390 [
10391 text "
10392 FAMTerminator class
10393 "
10394 fontSize 14
10395 fontName "Consolas"
10396 alignment "left"
10397 anchor "tl"
10398 borderDistance 6
10399 ]
10400 ]
10401
10402 node
10403 [
10404 id 12
10405 graphics
10406 [
10407 w 112.2
10408 h 26
10409 type "rectangle"
10410 fill "#FFFFFF"
10411 fill2 "#FFFFFF"
10412 outline "#000000"
10413 ]
10414 LabelGraphics
10415 [
10416 text "New Integers"
10417 outline "#000000"
10418 fill "#FFFFFF"
10419 fontSize 16
10420 fontName "Monospace"
10421 autoSizePolicy "node_width"
10422 anchor "t"
10423 borderDistance 0.0
10424 ]
10425 LabelGraphics
10426 [
10427 text "
10428 "
10429 fontSize 14
10430 fontName "Consolas"
10431 alignment "left"
10432 anchor "tl"
10433 borderDistance 6
10434 ]
10435 ]
10436
10437 node
10438 [
10439 id 13
10440 graphics
10441 [
10442 w 85.80000000000001
10443 h 26
10444 type "rectangle"
10445 fill "#FFFFFF"
10446 fill2 "#FFFFFF"
10447 outline "#000000"
10448 ]
10449 LabelGraphics
10450 [
10451 text "New Reals"
10452 outline "#000000"
10453 fill "#FFFFFF"
10454 fontSize 16
10455 fontName "Monospace"
10456 autoSizePolicy "node_width"
10457 anchor "t"
10458 borderDistance 0.0
10459 ]
10460 LabelGraphics
10461 [
10462 text "
10463 "
10464 fontSize 14
10465 fontName "Consolas"
10466 alignment "left"
10467 anchor "tl"
10468 borderDistance 6
10469 ]
10470 ]
10471
10472 node
10473 [
10474 id 14
10475 graphics
10476 [
10477 w 103.4
10478 h 26
10479 type "rectangle"
10480 fill "#FFFFFF"
10481 fill2 "#FFFFFF"
10482 outline "#000000"
10483 ]
10484 LabelGraphics
10485 [
10486 text "New Strings"
10487 outline "#000000"
10488 fill "#FFFFFF"
10489 fontSize 16
10490 fontName "Monospace"
10491 autoSizePolicy "node_width"
10492 anchor "t"
10493 borderDistance 0.0
10494 ]
10495 LabelGraphics
10496 [
10497 text "
10498 "
10499 fontSize 14
10500 fontName "Consolas"
10501 alignment "left"
10502 anchor "tl"
10503 borderDistance 6
10504 ]
10505 ]
10506
10507 node
10508 [
10509 id 15
10510 graphics
10511 [
10512 w 103.4
10513 h 26
10514 type "rectangle"
10515 fill "#FFFFFF"
10516 fill2 "#FFFFFF"
10517 outline "#000000"
10518 ]
10519 LabelGraphics
10520 [
10521 text "New Objects"
10522 outline "#000000"
10523 fill "#FFFFFF"
10524 fontSize 16
10525 fontName "Monospace"
10526 autoSizePolicy "node_width"
10527 anchor "t"
10528 borderDistance 0.0
10529 ]
10530 LabelGraphics
10531 [
10532 text "
10533 "
10534 fontSize 14
10535 fontName "Consolas"
10536 alignment "left"
10537 anchor "tl"
10538 borderDistance 6
10539 ]
10540 ]
10541 edge
10542 [
10543 source 6
10544 target 7
10545 graphics
10546 [
10547 fill "#000000"
10548 width 3
10549 targetArrow "standard"
10550 ]
10551 LabelGraphics
10552 [
10553 text "interface reference FunctionalElement"
10554 fontSize 14
10555 fontName "Consolas"
10556 configuration "AutoFlippingLabel"
10557 model "six_pos"
10558 position "thead"
10559 ]
10560 ]
10561 edge
10562 [
10563 source 6
10564 target 3
10565 graphics
10566 [
10567 fill "#000000"
10568 targetArrow "standard"
10569 ]
10570 LabelGraphics
10571 [
10572 text "model reference FunctionalElement"
10573 fontSize 14
10574 fontName "Consolas"
10575 configuration "AutoFlippingLabel"
10576 model "six_pos"
10577 position "thead"
10578 ]
10579 ]
10580 edge
10581 [
10582 source 3
10583 target 6
10584 graphics
10585 [
10586 fill "#000000"
10587 width 3
10588 targetArrow "standard"
10589 ]
10590 LabelGraphics
10591 [
10592 text "rootElements reference FunctionalArchitectureModel"
10593 fontSize 14
10594 fontName "Consolas"
10595 configuration "AutoFlippingLabel"
10596 model "six_pos"
10597 position "thead"
10598 ]
10599 ]
10600 edge
10601 [
10602 source 11
10603 target 10
10604 graphics
10605 [
10606 fill "#000000"
10607 targetArrow "standard"
10608 ]
10609 LabelGraphics
10610 [
10611 text "data reference FAMTerminator"
10612 fontSize 14
10613 fontName "Consolas"
10614 configuration "AutoFlippingLabel"
10615 model "six_pos"
10616 position "thead"
10617 ]
10618 ]
10619 edge
10620 [
10621 source 9
10622 target 8
10623 graphics
10624 [
10625 fill "#000000"
10626 targetArrow "standard"
10627 ]
10628 LabelGraphics
10629 [
10630 text "from reference InformationLink"
10631 fontSize 14
10632 fontName "Consolas"
10633 configuration "AutoFlippingLabel"
10634 model "six_pos"
10635 position "thead"
10636 ]
10637 ]
10638 edge
10639 [
10640 source 9
10641 target 10
10642 graphics
10643 [
10644 fill "#000000"
10645 targetArrow "standard"
10646 ]
10647 LabelGraphics
10648 [
10649 text "to reference InformationLink"
10650 fontSize 14
10651 fontName "Consolas"
10652 configuration "AutoFlippingLabel"
10653 model "six_pos"
10654 position "thead"
10655 ]
10656 ]
10657 edge
10658 [
10659 source 7
10660 target 8
10661 graphics
10662 [
10663 fill "#000000"
10664 width 3
10665 targetArrow "standard"
10666 ]
10667 LabelGraphics
10668 [
10669 text "data reference FunctionalInterface"
10670 fontSize 14
10671 fontName "Consolas"
10672 configuration "AutoFlippingLabel"
10673 model "six_pos"
10674 position "thead"
10675 ]
10676 ]
10677 edge
10678 [
10679 source 7
10680 target 10
10681 graphics
10682 [
10683 fill "#000000"
10684 width 3
10685 targetArrow "standard"
10686 ]
10687 LabelGraphics
10688 [
10689 text "data reference FunctionalInterface"
10690 fontSize 14
10691 fontName "Consolas"
10692 configuration "AutoFlippingLabel"
10693 model "six_pos"
10694 position "thead"
10695 ]
10696 ]
10697 edge
10698 [
10699 source 7
10700 target 6
10701 graphics
10702 [
10703 fill "#000000"
10704 targetArrow "standard"
10705 ]
10706 LabelGraphics
10707 [
10708 text "element reference FunctionalInterface"
10709 fontSize 14
10710 fontName "Consolas"
10711 configuration "AutoFlippingLabel"
10712 model "six_pos"
10713 position "thead"
10714 ]
10715 ]
10716 edge
10717 [
10718 source 10
10719 target 9
10720 graphics
10721 [
10722 fill "#000000"
10723 targetArrow "standard"
10724 ]
10725 LabelGraphics
10726 [
10727 text "IncomingLinks reference FunctionalInput"
10728 fontSize 14
10729 fontName "Consolas"
10730 configuration "AutoFlippingLabel"
10731 model "six_pos"
10732 position "thead"
10733 ]
10734 ]
10735 edge
10736 [
10737 source 8
10738 target 9
10739 graphics
10740 [
10741 fill "#000000"
10742 width 3
10743 targetArrow "standard"
10744 ]
10745 LabelGraphics
10746 [
10747 text "outgoingLinks reference FunctionalOutput"
10748 fontSize 14
10749 fontName "Consolas"
10750 configuration "AutoFlippingLabel"
10751 model "six_pos"
10752 position "thead"
10753 ]
10754 ]
10755 edge
10756 [
10757 source 10
10758 target 11
10759 graphics
10760 [
10761 fill "#000000"
10762 width 3
10763 targetArrow "standard"
10764 ]
10765 LabelGraphics
10766 [
10767 text "terminator reference FunctionalData"
10768 fontSize 14
10769 fontName "Consolas"
10770 configuration "AutoFlippingLabel"
10771 model "six_pos"
10772 position "thead"
10773 ]
10774 ]
10775 edge
10776 [
10777 source 8
10778 target 7
10779 graphics
10780 [
10781 fill "#000000"
10782 targetArrow "standard"
10783 ]
10784 LabelGraphics
10785 [
10786 text "interface reference FunctionalData"
10787 fontSize 14
10788 fontName "Consolas"
10789 configuration "AutoFlippingLabel"
10790 model "six_pos"
10791 position "thead"
10792 ]
10793 ]
10794 edge
10795 [
10796 source 10
10797 target 7
10798 graphics
10799 [
10800 fill "#000000"
10801 targetArrow "standard"
10802 ]
10803 LabelGraphics
10804 [
10805 text "interface reference FunctionalData"
10806 fontSize 14
10807 fontName "Consolas"
10808 configuration "AutoFlippingLabel"
10809 model "six_pos"
10810 position "thead"
10811 ]
10812 ]
10813 edge
10814 [
10815 source 6
10816 target 0
10817 graphics
10818 [
10819 fill "#000000"
10820 targetArrow "standard"
10821 ]
10822 LabelGraphics
10823 [
10824 text "type attribute Function"
10825 fontSize 14
10826 fontName "Consolas"
10827 configuration "AutoFlippingLabel"
10828 model "six_pos"
10829 position "thead"
10830 ]
10831 ]
10832]
10833graph
10834[
10835 node
10836 [
10837 id 0
10838 graphics
10839 [
10840 w 226.60000000000002
10841 h 40
10842 type "rectangle"
10843 fill "#FFFFFF"
10844 fill2 "#FFFFFF"
10845 outline "#000000"
10846 ]
10847 LabelGraphics
10848 [
10849 text "Root literal FunctionType"
10850 outline "#000000"
10851 fill "#FFFFFF"
10852 fontSize 16
10853 fontName "Monospace"
10854 autoSizePolicy "node_width"
10855 anchor "t"
10856 borderDistance 0.0
10857 ]
10858 LabelGraphics
10859 [
10860 text "
10861 FunctionType enum
10862 "
10863 fontSize 14
10864 fontName "Consolas"
10865 alignment "left"
10866 anchor "tl"
10867 borderDistance 6
10868 ]
10869 ]
10870
10871 node
10872 [
10873 id 1
10874 graphics
10875 [
10876 w 297.0
10877 h 40
10878 type "rectangle"
10879 fill "#FFFFFF"
10880 fill2 "#FFFFFF"
10881 outline "#000000"
10882 ]
10883 LabelGraphics
10884 [
10885 text "Intermediate literal FunctionType"
10886 outline "#000000"
10887 fill "#FFFFFF"
10888 fontSize 16
10889 fontName "Monospace"
10890 autoSizePolicy "node_width"
10891 anchor "t"
10892 borderDistance 0.0
10893 ]
10894 LabelGraphics
10895 [
10896 text "
10897 FunctionType enum
10898 "
10899 fontSize 14
10900 fontName "Consolas"
10901 alignment "left"
10902 anchor "tl"
10903 borderDistance 6
10904 ]
10905 ]
10906
10907 node
10908 [
10909 id 2
10910 graphics
10911 [
10912 w 226.60000000000002
10913 h 40
10914 type "rectangle"
10915 fill "#FFFFFF"
10916 fill2 "#FFFFFF"
10917 outline "#000000"
10918 ]
10919 LabelGraphics
10920 [
10921 text "Leaf literal FunctionType"
10922 outline "#000000"
10923 fill "#FFFFFF"
10924 fontSize 16
10925 fontName "Monospace"
10926 autoSizePolicy "node_width"
10927 anchor "t"
10928 borderDistance 0.0
10929 ]
10930 LabelGraphics
10931 [
10932 text "
10933 FunctionType enum
10934 "
10935 fontSize 14
10936 fontName "Consolas"
10937 alignment "left"
10938 anchor "tl"
10939 borderDistance 6
10940 ]
10941 ]
10942
10943 node
10944 [
10945 id 3
10946 graphics
10947 [
10948 w 361.90000000000003
10949 h 54
10950 type "rectangle"
10951 fill "#FFFFFF"
10952 fill2 "#FFFFFF"
10953 outline "#000000"
10954 ]
10955 LabelGraphics
10956 [
10957 text "o 1"
10958 outline "#000000"
10959 fill "#FFFFFF"
10960 fontSize 16
10961 fontName "Monospace"
10962 autoSizePolicy "node_width"
10963 anchor "t"
10964 borderDistance 0.0
10965 ]
10966 LabelGraphics
10967 [
10968 text "
10969 FunctionalArchitectureModel class DefinedPart
10970 FunctionalArchitectureModel class
10971 "
10972 fontSize 14
10973 fontName "Consolas"
10974 alignment "left"
10975 anchor "tl"
10976 borderDistance 6
10977 ]
10978 ]
10979
10980 node
10981 [
10982 id 4
10983 graphics
10984 [
10985 w 41.800000000000004
10986 h 26
10987 type "rectangle"
10988 fill "#FFFFFF"
10989 fill2 "#FFFFFF"
10990 outline "#000000"
10991 ]
10992 LabelGraphics
10993 [
10994 text "true"
10995 outline "#000000"
10996 fill "#FFFFFF"
10997 fontSize 16
10998 fontName "Monospace"
10999 autoSizePolicy "node_width"
11000 anchor "t"
11001 borderDistance 0.0
11002 ]
11003 LabelGraphics
11004 [
11005 text "
11006 "
11007 fontSize 14
11008 fontName "Consolas"
11009 alignment "left"
11010 anchor "tl"
11011 borderDistance 6
11012 ]
11013 ]
11014
11015 node
11016 [
11017 id 5
11018 graphics
11019 [
11020 w 50.6
11021 h 26
11022 type "rectangle"
11023 fill "#FFFFFF"
11024 fill2 "#FFFFFF"
11025 outline "#000000"
11026 ]
11027 LabelGraphics
11028 [
11029 text "false"
11030 outline "#000000"
11031 fill "#FFFFFF"
11032 fontSize 16
11033 fontName "Monospace"
11034 autoSizePolicy "node_width"
11035 anchor "t"
11036 borderDistance 0.0
11037 ]
11038 LabelGraphics
11039 [
11040 text "
11041 "
11042 fontSize 14
11043 fontName "Consolas"
11044 alignment "left"
11045 anchor "tl"
11046 borderDistance 6
11047 ]
11048 ]
11049
11050 node
11051 [
11052 id 6
11053 graphics
11054 [
11055 w 192.50000000000003
11056 h 54
11057 type "rectangle"
11058 fill "#FFFFFF"
11059 fill2 "#FFFFFF"
11060 outline "#000000"
11061 ]
11062 LabelGraphics
11063 [
11064 text "null"
11065 outline "#000000"
11066 fill "#FFFFFF"
11067 fontSize 16
11068 fontName "Monospace"
11069 autoSizePolicy "node_width"
11070 anchor "t"
11071 borderDistance 0.0
11072 ]
11073 LabelGraphics
11074 [
11075 text "
11076 FunctionalElement class
11077 Function class
11078 "
11079 fontSize 14
11080 fontName "Consolas"
11081 alignment "left"
11082 anchor "tl"
11083 borderDistance 6
11084 ]
11085 ]
11086
11087 node
11088 [
11089 id 7
11090 graphics
11091 [
11092 w 207.9
11093 h 40
11094 type "rectangle"
11095 fill "#FFFFFF"
11096 fill2 "#FFFFFF"
11097 outline "#000000"
11098 ]
11099 LabelGraphics
11100 [
11101 text "null"
11102 outline "#000000"
11103 fill "#FFFFFF"
11104 fontSize 16
11105 fontName "Monospace"
11106 autoSizePolicy "node_width"
11107 anchor "t"
11108 borderDistance 0.0
11109 ]
11110 LabelGraphics
11111 [
11112 text "
11113 FunctionalInterface class
11114 "
11115 fontSize 14
11116 fontName "Consolas"
11117 alignment "left"
11118 anchor "tl"
11119 borderDistance 6
11120 ]
11121 ]
11122
11123 node
11124 [
11125 id 8
11126 graphics
11127 [
11128 w 184.8
11129 h 54
11130 type "rectangle"
11131 fill "#FFFFFF"
11132 fill2 "#FFFFFF"
11133 outline "#000000"
11134 ]
11135 LabelGraphics
11136 [
11137 text "null"
11138 outline "#000000"
11139 fill "#FFFFFF"
11140 fontSize 16
11141 fontName "Monospace"
11142 autoSizePolicy "node_width"
11143 anchor "t"
11144 borderDistance 0.0
11145 ]
11146 LabelGraphics
11147 [
11148 text "
11149 FunctionalOutput class
11150 FunctionalData class
11151 "
11152 fontSize 14
11153 fontName "Consolas"
11154 alignment "left"
11155 anchor "tl"
11156 borderDistance 6
11157 ]
11158 ]
11159
11160 node
11161 [
11162 id 9
11163 graphics
11164 [
11165 w 161.70000000000002
11166 h 40
11167 type "rectangle"
11168 fill "#FFFFFF"
11169 fill2 "#FFFFFF"
11170 outline "#000000"
11171 ]
11172 LabelGraphics
11173 [
11174 text "null"
11175 outline "#000000"
11176 fill "#FFFFFF"
11177 fontSize 16
11178 fontName "Monospace"
11179 autoSizePolicy "node_width"
11180 anchor "t"
11181 borderDistance 0.0
11182 ]
11183 LabelGraphics
11184 [
11185 text "
11186 FAMTerminator class
11187 "
11188 fontSize 14
11189 fontName "Consolas"
11190 alignment "left"
11191 anchor "tl"
11192 borderDistance 6
11193 ]
11194 ]
11195
11196 node
11197 [
11198 id 10
11199 graphics
11200 [
11201 w 184.8
11202 h 54
11203 type "rectangle"
11204 fill "#FFFFFF"
11205 fill2 "#FFFFFF"
11206 outline "#000000"
11207 ]
11208 LabelGraphics
11209 [
11210 text "null"
11211 outline "#000000"
11212 fill "#FFFFFF"
11213 fontSize 16
11214 fontName "Monospace"
11215 autoSizePolicy "node_width"
11216 anchor "t"
11217 borderDistance 0.0
11218 ]
11219 LabelGraphics
11220 [
11221 text "
11222 FunctionalOutput class
11223 FunctionalData class
11224 "
11225 fontSize 14
11226 fontName "Consolas"
11227 alignment "left"
11228 anchor "tl"
11229 borderDistance 6
11230 ]
11231 ]
11232
11233 node
11234 [
11235 id 11
11236 graphics
11237 [
11238 w 177.10000000000002
11239 h 54
11240 type "rectangle"
11241 fill "#FFFFFF"
11242 fill2 "#FFFFFF"
11243 outline "#000000"
11244 ]
11245 LabelGraphics
11246 [
11247 text "null"
11248 outline "#000000"
11249 fill "#FFFFFF"
11250 fontSize 16
11251 fontName "Monospace"
11252 autoSizePolicy "node_width"
11253 anchor "t"
11254 borderDistance 0.0
11255 ]
11256 LabelGraphics
11257 [
11258 text "
11259 FunctionalInput class
11260 FunctionalData class
11261 "
11262 fontSize 14
11263 fontName "Consolas"
11264 alignment "left"
11265 anchor "tl"
11266 borderDistance 6
11267 ]
11268 ]
11269
11270 node
11271 [
11272 id 12
11273 graphics
11274 [
11275 w 112.2
11276 h 26
11277 type "rectangle"
11278 fill "#FFFFFF"
11279 fill2 "#FFFFFF"
11280 outline "#000000"
11281 ]
11282 LabelGraphics
11283 [
11284 text "New Integers"
11285 outline "#000000"
11286 fill "#FFFFFF"
11287 fontSize 16
11288 fontName "Monospace"
11289 autoSizePolicy "node_width"
11290 anchor "t"
11291 borderDistance 0.0
11292 ]
11293 LabelGraphics
11294 [
11295 text "
11296 "
11297 fontSize 14
11298 fontName "Consolas"
11299 alignment "left"
11300 anchor "tl"
11301 borderDistance 6
11302 ]
11303 ]
11304
11305 node
11306 [
11307 id 13
11308 graphics
11309 [
11310 w 85.80000000000001
11311 h 26
11312 type "rectangle"
11313 fill "#FFFFFF"
11314 fill2 "#FFFFFF"
11315 outline "#000000"
11316 ]
11317 LabelGraphics
11318 [
11319 text "New Reals"
11320 outline "#000000"
11321 fill "#FFFFFF"
11322 fontSize 16
11323 fontName "Monospace"
11324 autoSizePolicy "node_width"
11325 anchor "t"
11326 borderDistance 0.0
11327 ]
11328 LabelGraphics
11329 [
11330 text "
11331 "
11332 fontSize 14
11333 fontName "Consolas"
11334 alignment "left"
11335 anchor "tl"
11336 borderDistance 6
11337 ]
11338 ]
11339
11340 node
11341 [
11342 id 14
11343 graphics
11344 [
11345 w 103.4
11346 h 26
11347 type "rectangle"
11348 fill "#FFFFFF"
11349 fill2 "#FFFFFF"
11350 outline "#000000"
11351 ]
11352 LabelGraphics
11353 [
11354 text "New Strings"
11355 outline "#000000"
11356 fill "#FFFFFF"
11357 fontSize 16
11358 fontName "Monospace"
11359 autoSizePolicy "node_width"
11360 anchor "t"
11361 borderDistance 0.0
11362 ]
11363 LabelGraphics
11364 [
11365 text "
11366 "
11367 fontSize 14
11368 fontName "Consolas"
11369 alignment "left"
11370 anchor "tl"
11371 borderDistance 6
11372 ]
11373 ]
11374
11375 node
11376 [
11377 id 15
11378 graphics
11379 [
11380 w 103.4
11381 h 26
11382 type "rectangle"
11383 fill "#FFFFFF"
11384 fill2 "#FFFFFF"
11385 outline "#000000"
11386 ]
11387 LabelGraphics
11388 [
11389 text "New Objects"
11390 outline "#000000"
11391 fill "#FFFFFF"
11392 fontSize 16
11393 fontName "Monospace"
11394 autoSizePolicy "node_width"
11395 anchor "t"
11396 borderDistance 0.0
11397 ]
11398 LabelGraphics
11399 [
11400 text "
11401 "
11402 fontSize 14
11403 fontName "Consolas"
11404 alignment "left"
11405 anchor "tl"
11406 borderDistance 6
11407 ]
11408 ]
11409 edge
11410 [
11411 source 6
11412 target 7
11413 graphics
11414 [
11415 fill "#000000"
11416 width 3
11417 targetArrow "standard"
11418 ]
11419 LabelGraphics
11420 [
11421 text "interface reference FunctionalElement"
11422 fontSize 14
11423 fontName "Consolas"
11424 configuration "AutoFlippingLabel"
11425 model "six_pos"
11426 position "thead"
11427 ]
11428 ]
11429 edge
11430 [
11431 source 6
11432 target 3
11433 graphics
11434 [
11435 fill "#000000"
11436 targetArrow "standard"
11437 ]
11438 LabelGraphics
11439 [
11440 text "model reference FunctionalElement"
11441 fontSize 14
11442 fontName "Consolas"
11443 configuration "AutoFlippingLabel"
11444 model "six_pos"
11445 position "thead"
11446 ]
11447 ]
11448 edge
11449 [
11450 source 3
11451 target 6
11452 graphics
11453 [
11454 fill "#000000"
11455 width 3
11456 targetArrow "standard"
11457 ]
11458 LabelGraphics
11459 [
11460 text "rootElements reference FunctionalArchitectureModel"
11461 fontSize 14
11462 fontName "Consolas"
11463 configuration "AutoFlippingLabel"
11464 model "six_pos"
11465 position "thead"
11466 ]
11467 ]
11468 edge
11469 [
11470 source 9
11471 target 8
11472 graphics
11473 [
11474 fill "#000000"
11475 targetArrow "standard"
11476 ]
11477 LabelGraphics
11478 [
11479 text "data reference FAMTerminator"
11480 fontSize 14
11481 fontName "Consolas"
11482 configuration "AutoFlippingLabel"
11483 model "six_pos"
11484 position "thead"
11485 ]
11486 ]
11487 edge
11488 [
11489 source 7
11490 target 8
11491 graphics
11492 [
11493 fill "#000000"
11494 width 3
11495 targetArrow "standard"
11496 ]
11497 LabelGraphics
11498 [
11499 text "data reference FunctionalInterface"
11500 fontSize 14
11501 fontName "Consolas"
11502 configuration "AutoFlippingLabel"
11503 model "six_pos"
11504 position "thead"
11505 ]
11506 ]
11507 edge
11508 [
11509 source 7
11510 target 10
11511 graphics
11512 [
11513 fill "#000000"
11514 width 3
11515 targetArrow "standard"
11516 ]
11517 LabelGraphics
11518 [
11519 text "data reference FunctionalInterface"
11520 fontSize 14
11521 fontName "Consolas"
11522 configuration "AutoFlippingLabel"
11523 model "six_pos"
11524 position "thead"
11525 ]
11526 ]
11527 edge
11528 [
11529 source 7
11530 target 11
11531 graphics
11532 [
11533 fill "#000000"
11534 width 3
11535 targetArrow "standard"
11536 ]
11537 LabelGraphics
11538 [
11539 text "data reference FunctionalInterface"
11540 fontSize 14
11541 fontName "Consolas"
11542 configuration "AutoFlippingLabel"
11543 model "six_pos"
11544 position "thead"
11545 ]
11546 ]
11547 edge
11548 [
11549 source 7
11550 target 6
11551 graphics
11552 [
11553 fill "#000000"
11554 targetArrow "standard"
11555 ]
11556 LabelGraphics
11557 [
11558 text "element reference FunctionalInterface"
11559 fontSize 14
11560 fontName "Consolas"
11561 configuration "AutoFlippingLabel"
11562 model "six_pos"
11563 position "thead"
11564 ]
11565 ]
11566 edge
11567 [
11568 source 8
11569 target 9
11570 graphics
11571 [
11572 fill "#000000"
11573 width 3
11574 targetArrow "standard"
11575 ]
11576 LabelGraphics
11577 [
11578 text "terminator reference FunctionalData"
11579 fontSize 14
11580 fontName "Consolas"
11581 configuration "AutoFlippingLabel"
11582 model "six_pos"
11583 position "thead"
11584 ]
11585 ]
11586 edge
11587 [
11588 source 8
11589 target 7
11590 graphics
11591 [
11592 fill "#000000"
11593 targetArrow "standard"
11594 ]
11595 LabelGraphics
11596 [
11597 text "interface reference FunctionalData"
11598 fontSize 14
11599 fontName "Consolas"
11600 configuration "AutoFlippingLabel"
11601 model "six_pos"
11602 position "thead"
11603 ]
11604 ]
11605 edge
11606 [
11607 source 10
11608 target 7
11609 graphics
11610 [
11611 fill "#000000"
11612 targetArrow "standard"
11613 ]
11614 LabelGraphics
11615 [
11616 text "interface reference FunctionalData"
11617 fontSize 14
11618 fontName "Consolas"
11619 configuration "AutoFlippingLabel"
11620 model "six_pos"
11621 position "thead"
11622 ]
11623 ]
11624 edge
11625 [
11626 source 11
11627 target 7
11628 graphics
11629 [
11630 fill "#000000"
11631 targetArrow "standard"
11632 ]
11633 LabelGraphics
11634 [
11635 text "interface reference FunctionalData"
11636 fontSize 14
11637 fontName "Consolas"
11638 configuration "AutoFlippingLabel"
11639 model "six_pos"
11640 position "thead"
11641 ]
11642 ]
11643 edge
11644 [
11645 source 6
11646 target 0
11647 graphics
11648 [
11649 fill "#000000"
11650 targetArrow "standard"
11651 ]
11652 LabelGraphics
11653 [
11654 text "type attribute Function"
11655 fontSize 14
11656 fontName "Consolas"
11657 configuration "AutoFlippingLabel"
11658 model "six_pos"
11659 position "thead"
11660 ]
11661 ]
11662]
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 5df81bb3..a551c9fc 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi
index b4259573..9e8efc63 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,12 +1,12 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<fam:FunctionalInterface xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel"> 2<fam:FunctionalArchitectureModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel">
3 <data xsi:type="fam:FunctionalOutput"> 3 <rootElements xsi:type="fam:Function">
4 <terminator/> 4 <interface>
5 </data> 5 <data xsi:type="fam:FunctionalOutput"/>
6 <data xsi:type="fam:FunctionalOutput"> 6 <data xsi:type="fam:FunctionalOutput">
7 <terminator/> 7 <terminator/>
8 </data> 8 </data>
9 <data xsi:type="fam:FunctionalOutput"> 9 <data xsi:type="fam:FunctionalInput"/>
10 <terminator/> 10 </interface>
11 </data> 11 </rootElements>
12</fam:FunctionalInterface> 12</fam:FunctionalArchitectureModel>
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 2dd09497..f41692fc 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
@@ -8423,3 +8423,3341 @@ graph
8423 ] 8423 ]
8424 ] 8424 ]
8425] 8425]
8426graph
8427[
8428 node
8429 [
8430 id 0
8431 graphics
8432 [
8433 w 226.60000000000002
8434 h 40
8435 type "rectangle"
8436 fill "#FFFFFF"
8437 fill2 "#FFFFFF"
8438 outline "#000000"
8439 ]
8440 LabelGraphics
8441 [
8442 text "Root literal FunctionType"
8443 outline "#000000"
8444 fill "#FFFFFF"
8445 fontSize 16
8446 fontName "Monospace"
8447 autoSizePolicy "node_width"
8448 anchor "t"
8449 borderDistance 0.0
8450 ]
8451 LabelGraphics
8452 [
8453 text "
8454 FunctionType enum
8455 "
8456 fontSize 14
8457 fontName "Consolas"
8458 alignment "left"
8459 anchor "tl"
8460 borderDistance 6
8461 ]
8462 ]
8463
8464 node
8465 [
8466 id 1
8467 graphics
8468 [
8469 w 297.0
8470 h 40
8471 type "rectangle"
8472 fill "#FFFFFF"
8473 fill2 "#FFFFFF"
8474 outline "#000000"
8475 ]
8476 LabelGraphics
8477 [
8478 text "Intermediate literal FunctionType"
8479 outline "#000000"
8480 fill "#FFFFFF"
8481 fontSize 16
8482 fontName "Monospace"
8483 autoSizePolicy "node_width"
8484 anchor "t"
8485 borderDistance 0.0
8486 ]
8487 LabelGraphics
8488 [
8489 text "
8490 FunctionType enum
8491 "
8492 fontSize 14
8493 fontName "Consolas"
8494 alignment "left"
8495 anchor "tl"
8496 borderDistance 6
8497 ]
8498 ]
8499
8500 node
8501 [
8502 id 2
8503 graphics
8504 [
8505 w 226.60000000000002
8506 h 40
8507 type "rectangle"
8508 fill "#FFFFFF"
8509 fill2 "#FFFFFF"
8510 outline "#000000"
8511 ]
8512 LabelGraphics
8513 [
8514 text "Leaf literal FunctionType"
8515 outline "#000000"
8516 fill "#FFFFFF"
8517 fontSize 16
8518 fontName "Monospace"
8519 autoSizePolicy "node_width"
8520 anchor "t"
8521 borderDistance 0.0
8522 ]
8523 LabelGraphics
8524 [
8525 text "
8526 FunctionType enum
8527 "
8528 fontSize 14
8529 fontName "Consolas"
8530 alignment "left"
8531 anchor "tl"
8532 borderDistance 6
8533 ]
8534 ]
8535
8536 node
8537 [
8538 id 3
8539 graphics
8540 [
8541 w 41.800000000000004
8542 h 26
8543 type "rectangle"
8544 fill "#FFFFFF"
8545 fill2 "#FFFFFF"
8546 outline "#000000"
8547 ]
8548 LabelGraphics
8549 [
8550 text "true"
8551 outline "#000000"
8552 fill "#FFFFFF"
8553 fontSize 16
8554 fontName "Monospace"
8555 autoSizePolicy "node_width"
8556 anchor "t"
8557 borderDistance 0.0
8558 ]
8559 LabelGraphics
8560 [
8561 text "
8562 "
8563 fontSize 14
8564 fontName "Consolas"
8565 alignment "left"
8566 anchor "tl"
8567 borderDistance 6
8568 ]
8569 ]
8570
8571 node
8572 [
8573 id 4
8574 graphics
8575 [
8576 w 50.6
8577 h 26
8578 type "rectangle"
8579 fill "#FFFFFF"
8580 fill2 "#FFFFFF"
8581 outline "#000000"
8582 ]
8583 LabelGraphics
8584 [
8585 text "false"
8586 outline "#000000"
8587 fill "#FFFFFF"
8588 fontSize 16
8589 fontName "Monospace"
8590 autoSizePolicy "node_width"
8591 anchor "t"
8592 borderDistance 0.0
8593 ]
8594 LabelGraphics
8595 [
8596 text "
8597 "
8598 fontSize 14
8599 fontName "Consolas"
8600 alignment "left"
8601 anchor "tl"
8602 borderDistance 6
8603 ]
8604 ]
8605
8606 node
8607 [
8608 id 5
8609 graphics
8610 [
8611 w 207.9
8612 h 40
8613 type "rectangle"
8614 fill "#FFFFFF"
8615 fill2 "#FFFFFF"
8616 outline "#000000"
8617 ]
8618 LabelGraphics
8619 [
8620 text "null"
8621 outline "#000000"
8622 fill "#FFFFFF"
8623 fontSize 16
8624 fontName "Monospace"
8625 autoSizePolicy "node_width"
8626 anchor "t"
8627 borderDistance 0.0
8628 ]
8629 LabelGraphics
8630 [
8631 text "
8632 FunctionalInterface class
8633 "
8634 fontSize 14
8635 fontName "Consolas"
8636 alignment "left"
8637 anchor "tl"
8638 borderDistance 6
8639 ]
8640 ]
8641
8642 node
8643 [
8644 id 6
8645 graphics
8646 [
8647 w 184.8
8648 h 54
8649 type "rectangle"
8650 fill "#FFFFFF"
8651 fill2 "#FFFFFF"
8652 outline "#000000"
8653 ]
8654 LabelGraphics
8655 [
8656 text "null"
8657 outline "#000000"
8658 fill "#FFFFFF"
8659 fontSize 16
8660 fontName "Monospace"
8661 autoSizePolicy "node_width"
8662 anchor "t"
8663 borderDistance 0.0
8664 ]
8665 LabelGraphics
8666 [
8667 text "
8668 FunctionalOutput class
8669 FunctionalData class
8670 "
8671 fontSize 14
8672 fontName "Consolas"
8673 alignment "left"
8674 anchor "tl"
8675 borderDistance 6
8676 ]
8677 ]
8678
8679 node
8680 [
8681 id 7
8682 graphics
8683 [
8684 w 177.10000000000002
8685 h 54
8686 type "rectangle"
8687 fill "#FFFFFF"
8688 fill2 "#FFFFFF"
8689 outline "#000000"
8690 ]
8691 LabelGraphics
8692 [
8693 text "null"
8694 outline "#000000"
8695 fill "#FFFFFF"
8696 fontSize 16
8697 fontName "Monospace"
8698 autoSizePolicy "node_width"
8699 anchor "t"
8700 borderDistance 0.0
8701 ]
8702 LabelGraphics
8703 [
8704 text "
8705 FunctionalInput class
8706 FunctionalData class
8707 "
8708 fontSize 14
8709 fontName "Consolas"
8710 alignment "left"
8711 anchor "tl"
8712 borderDistance 6
8713 ]
8714 ]
8715
8716 node
8717 [
8718 id 8
8719 graphics
8720 [
8721 w 161.70000000000002
8722 h 40
8723 type "rectangle"
8724 fill "#FFFFFF"
8725 fill2 "#FFFFFF"
8726 outline "#000000"
8727 ]
8728 LabelGraphics
8729 [
8730 text "null"
8731 outline "#000000"
8732 fill "#FFFFFF"
8733 fontSize 16
8734 fontName "Monospace"
8735 autoSizePolicy "node_width"
8736 anchor "t"
8737 borderDistance 0.0
8738 ]
8739 LabelGraphics
8740 [
8741 text "
8742 FAMTerminator class
8743 "
8744 fontSize 14
8745 fontName "Consolas"
8746 alignment "left"
8747 anchor "tl"
8748 borderDistance 6
8749 ]
8750 ]
8751
8752 node
8753 [
8754 id 9
8755 graphics
8756 [
8757 w 184.8
8758 h 54
8759 type "rectangle"
8760 fill "#FFFFFF"
8761 fill2 "#FFFFFF"
8762 outline "#000000"
8763 ]
8764 LabelGraphics
8765 [
8766 text "null"
8767 outline "#000000"
8768 fill "#FFFFFF"
8769 fontSize 16
8770 fontName "Monospace"
8771 autoSizePolicy "node_width"
8772 anchor "t"
8773 borderDistance 0.0
8774 ]
8775 LabelGraphics
8776 [
8777 text "
8778 FunctionalOutput class
8779 FunctionalData class
8780 "
8781 fontSize 14
8782 fontName "Consolas"
8783 alignment "left"
8784 anchor "tl"
8785 borderDistance 6
8786 ]
8787 ]
8788
8789 node
8790 [
8791 id 10
8792 graphics
8793 [
8794 w 184.8
8795 h 54
8796 type "rectangle"
8797 fill "#FFFFFF"
8798 fill2 "#FFFFFF"
8799 outline "#000000"
8800 ]
8801 LabelGraphics
8802 [
8803 text "null"
8804 outline "#000000"
8805 fill "#FFFFFF"
8806 fontSize 16
8807 fontName "Monospace"
8808 autoSizePolicy "node_width"
8809 anchor "t"
8810 borderDistance 0.0
8811 ]
8812 LabelGraphics
8813 [
8814 text "
8815 FunctionalOutput class
8816 FunctionalData class
8817 "
8818 fontSize 14
8819 fontName "Consolas"
8820 alignment "left"
8821 anchor "tl"
8822 borderDistance 6
8823 ]
8824 ]
8825
8826 node
8827 [
8828 id 11
8829 graphics
8830 [
8831 w 161.70000000000002
8832 h 40
8833 type "rectangle"
8834 fill "#FFFFFF"
8835 fill2 "#FFFFFF"
8836 outline "#000000"
8837 ]
8838 LabelGraphics
8839 [
8840 text "null"
8841 outline "#000000"
8842 fill "#FFFFFF"
8843 fontSize 16
8844 fontName "Monospace"
8845 autoSizePolicy "node_width"
8846 anchor "t"
8847 borderDistance 0.0
8848 ]
8849 LabelGraphics
8850 [
8851 text "
8852 FAMTerminator class
8853 "
8854 fontSize 14
8855 fontName "Consolas"
8856 alignment "left"
8857 anchor "tl"
8858 borderDistance 6
8859 ]
8860 ]
8861
8862 node
8863 [
8864 id 12
8865 graphics
8866 [
8867 w 112.2
8868 h 26
8869 type "rectangle"
8870 fill "#FFFFFF"
8871 fill2 "#FFFFFF"
8872 outline "#000000"
8873 ]
8874 LabelGraphics
8875 [
8876 text "New Integers"
8877 outline "#000000"
8878 fill "#FFFFFF"
8879 fontSize 16
8880 fontName "Monospace"
8881 autoSizePolicy "node_width"
8882 anchor "t"
8883 borderDistance 0.0
8884 ]
8885 LabelGraphics
8886 [
8887 text "
8888 "
8889 fontSize 14
8890 fontName "Consolas"
8891 alignment "left"
8892 anchor "tl"
8893 borderDistance 6
8894 ]
8895 ]
8896
8897 node
8898 [
8899 id 13
8900 graphics
8901 [
8902 w 85.80000000000001
8903 h 26
8904 type "rectangle"
8905 fill "#FFFFFF"
8906 fill2 "#FFFFFF"
8907 outline "#000000"
8908 ]
8909 LabelGraphics
8910 [
8911 text "New Reals"
8912 outline "#000000"
8913 fill "#FFFFFF"
8914 fontSize 16
8915 fontName "Monospace"
8916 autoSizePolicy "node_width"
8917 anchor "t"
8918 borderDistance 0.0
8919 ]
8920 LabelGraphics
8921 [
8922 text "
8923 "
8924 fontSize 14
8925 fontName "Consolas"
8926 alignment "left"
8927 anchor "tl"
8928 borderDistance 6
8929 ]
8930 ]
8931
8932 node
8933 [
8934 id 14
8935 graphics
8936 [
8937 w 103.4
8938 h 26
8939 type "rectangle"
8940 fill "#FFFFFF"
8941 fill2 "#FFFFFF"
8942 outline "#000000"
8943 ]
8944 LabelGraphics
8945 [
8946 text "New Strings"
8947 outline "#000000"
8948 fill "#FFFFFF"
8949 fontSize 16
8950 fontName "Monospace"
8951 autoSizePolicy "node_width"
8952 anchor "t"
8953 borderDistance 0.0
8954 ]
8955 LabelGraphics
8956 [
8957 text "
8958 "
8959 fontSize 14
8960 fontName "Consolas"
8961 alignment "left"
8962 anchor "tl"
8963 borderDistance 6
8964 ]
8965 ]
8966
8967 node
8968 [
8969 id 15
8970 graphics
8971 [
8972 w 103.4
8973 h 26
8974 type "rectangle"
8975 fill "#FFFFFF"
8976 fill2 "#FFFFFF"
8977 outline "#000000"
8978 ]
8979 LabelGraphics
8980 [
8981 text "New Objects"
8982 outline "#000000"
8983 fill "#FFFFFF"
8984 fontSize 16
8985 fontName "Monospace"
8986 autoSizePolicy "node_width"
8987 anchor "t"
8988 borderDistance 0.0
8989 ]
8990 LabelGraphics
8991 [
8992 text "
8993 "
8994 fontSize 14
8995 fontName "Consolas"
8996 alignment "left"
8997 anchor "tl"
8998 borderDistance 6
8999 ]
9000 ]
9001 edge
9002 [
9003 source 8
9004 target 6
9005 graphics
9006 [
9007 fill "#000000"
9008 targetArrow "standard"
9009 ]
9010 LabelGraphics
9011 [
9012 text "data reference FAMTerminator"
9013 fontSize 14
9014 fontName "Consolas"
9015 configuration "AutoFlippingLabel"
9016 model "six_pos"
9017 position "thead"
9018 ]
9019 ]
9020 edge
9021 [
9022 source 11
9023 target 10
9024 graphics
9025 [
9026 fill "#000000"
9027 targetArrow "standard"
9028 ]
9029 LabelGraphics
9030 [
9031 text "data reference FAMTerminator"
9032 fontSize 14
9033 fontName "Consolas"
9034 configuration "AutoFlippingLabel"
9035 model "six_pos"
9036 position "thead"
9037 ]
9038 ]
9039 edge
9040 [
9041 source 5
9042 target 6
9043 graphics
9044 [
9045 fill "#000000"
9046 width 3
9047 targetArrow "standard"
9048 ]
9049 LabelGraphics
9050 [
9051 text "data reference FunctionalInterface"
9052 fontSize 14
9053 fontName "Consolas"
9054 configuration "AutoFlippingLabel"
9055 model "six_pos"
9056 position "thead"
9057 ]
9058 ]
9059 edge
9060 [
9061 source 5
9062 target 7
9063 graphics
9064 [
9065 fill "#000000"
9066 width 3
9067 targetArrow "standard"
9068 ]
9069 LabelGraphics
9070 [
9071 text "data reference FunctionalInterface"
9072 fontSize 14
9073 fontName "Consolas"
9074 configuration "AutoFlippingLabel"
9075 model "six_pos"
9076 position "thead"
9077 ]
9078 ]
9079 edge
9080 [
9081 source 5
9082 target 9
9083 graphics
9084 [
9085 fill "#000000"
9086 width 3
9087 targetArrow "standard"
9088 ]
9089 LabelGraphics
9090 [
9091 text "data reference FunctionalInterface"
9092 fontSize 14
9093 fontName "Consolas"
9094 configuration "AutoFlippingLabel"
9095 model "six_pos"
9096 position "thead"
9097 ]
9098 ]
9099 edge
9100 [
9101 source 5
9102 target 10
9103 graphics
9104 [
9105 fill "#000000"
9106 width 3
9107 targetArrow "standard"
9108 ]
9109 LabelGraphics
9110 [
9111 text "data reference FunctionalInterface"
9112 fontSize 14
9113 fontName "Consolas"
9114 configuration "AutoFlippingLabel"
9115 model "six_pos"
9116 position "thead"
9117 ]
9118 ]
9119 edge
9120 [
9121 source 6
9122 target 8
9123 graphics
9124 [
9125 fill "#000000"
9126 width 3
9127 targetArrow "standard"
9128 ]
9129 LabelGraphics
9130 [
9131 text "terminator reference FunctionalData"
9132 fontSize 14
9133 fontName "Consolas"
9134 configuration "AutoFlippingLabel"
9135 model "six_pos"
9136 position "thead"
9137 ]
9138 ]
9139 edge
9140 [
9141 source 10
9142 target 11
9143 graphics
9144 [
9145 fill "#000000"
9146 width 3
9147 targetArrow "standard"
9148 ]
9149 LabelGraphics
9150 [
9151 text "terminator reference FunctionalData"
9152 fontSize 14
9153 fontName "Consolas"
9154 configuration "AutoFlippingLabel"
9155 model "six_pos"
9156 position "thead"
9157 ]
9158 ]
9159 edge
9160 [
9161 source 6
9162 target 5
9163 graphics
9164 [
9165 fill "#000000"
9166 targetArrow "standard"
9167 ]
9168 LabelGraphics
9169 [
9170 text "interface reference FunctionalData"
9171 fontSize 14
9172 fontName "Consolas"
9173 configuration "AutoFlippingLabel"
9174 model "six_pos"
9175 position "thead"
9176 ]
9177 ]
9178 edge
9179 [
9180 source 7
9181 target 5
9182 graphics
9183 [
9184 fill "#000000"
9185 targetArrow "standard"
9186 ]
9187 LabelGraphics
9188 [
9189 text "interface reference FunctionalData"
9190 fontSize 14
9191 fontName "Consolas"
9192 configuration "AutoFlippingLabel"
9193 model "six_pos"
9194 position "thead"
9195 ]
9196 ]
9197 edge
9198 [
9199 source 9
9200 target 5
9201 graphics
9202 [
9203 fill "#000000"
9204 targetArrow "standard"
9205 ]
9206 LabelGraphics
9207 [
9208 text "interface reference FunctionalData"
9209 fontSize 14
9210 fontName "Consolas"
9211 configuration "AutoFlippingLabel"
9212 model "six_pos"
9213 position "thead"
9214 ]
9215 ]
9216 edge
9217 [
9218 source 10
9219 target 5
9220 graphics
9221 [
9222 fill "#000000"
9223 targetArrow "standard"
9224 ]
9225 LabelGraphics
9226 [
9227 text "interface reference FunctionalData"
9228 fontSize 14
9229 fontName "Consolas"
9230 configuration "AutoFlippingLabel"
9231 model "six_pos"
9232 position "thead"
9233 ]
9234 ]
9235]
9236graph
9237[
9238 node
9239 [
9240 id 0
9241 graphics
9242 [
9243 w 226.60000000000002
9244 h 40
9245 type "rectangle"
9246 fill "#FFFFFF"
9247 fill2 "#FFFFFF"
9248 outline "#000000"
9249 ]
9250 LabelGraphics
9251 [
9252 text "Root literal FunctionType"
9253 outline "#000000"
9254 fill "#FFFFFF"
9255 fontSize 16
9256 fontName "Monospace"
9257 autoSizePolicy "node_width"
9258 anchor "t"
9259 borderDistance 0.0
9260 ]
9261 LabelGraphics
9262 [
9263 text "
9264 FunctionType enum
9265 "
9266 fontSize 14
9267 fontName "Consolas"
9268 alignment "left"
9269 anchor "tl"
9270 borderDistance 6
9271 ]
9272 ]
9273
9274 node
9275 [
9276 id 1
9277 graphics
9278 [
9279 w 297.0
9280 h 40
9281 type "rectangle"
9282 fill "#FFFFFF"
9283 fill2 "#FFFFFF"
9284 outline "#000000"
9285 ]
9286 LabelGraphics
9287 [
9288 text "Intermediate literal FunctionType"
9289 outline "#000000"
9290 fill "#FFFFFF"
9291 fontSize 16
9292 fontName "Monospace"
9293 autoSizePolicy "node_width"
9294 anchor "t"
9295 borderDistance 0.0
9296 ]
9297 LabelGraphics
9298 [
9299 text "
9300 FunctionType enum
9301 "
9302 fontSize 14
9303 fontName "Consolas"
9304 alignment "left"
9305 anchor "tl"
9306 borderDistance 6
9307 ]
9308 ]
9309
9310 node
9311 [
9312 id 2
9313 graphics
9314 [
9315 w 226.60000000000002
9316 h 40
9317 type "rectangle"
9318 fill "#FFFFFF"
9319 fill2 "#FFFFFF"
9320 outline "#000000"
9321 ]
9322 LabelGraphics
9323 [
9324 text "Leaf literal FunctionType"
9325 outline "#000000"
9326 fill "#FFFFFF"
9327 fontSize 16
9328 fontName "Monospace"
9329 autoSizePolicy "node_width"
9330 anchor "t"
9331 borderDistance 0.0
9332 ]
9333 LabelGraphics
9334 [
9335 text "
9336 FunctionType enum
9337 "
9338 fontSize 14
9339 fontName "Consolas"
9340 alignment "left"
9341 anchor "tl"
9342 borderDistance 6
9343 ]
9344 ]
9345
9346 node
9347 [
9348 id 3
9349 graphics
9350 [
9351 w 41.800000000000004
9352 h 26
9353 type "rectangle"
9354 fill "#FFFFFF"
9355 fill2 "#FFFFFF"
9356 outline "#000000"
9357 ]
9358 LabelGraphics
9359 [
9360 text "true"
9361 outline "#000000"
9362 fill "#FFFFFF"
9363 fontSize 16
9364 fontName "Monospace"
9365 autoSizePolicy "node_width"
9366 anchor "t"
9367 borderDistance 0.0
9368 ]
9369 LabelGraphics
9370 [
9371 text "
9372 "
9373 fontSize 14
9374 fontName "Consolas"
9375 alignment "left"
9376 anchor "tl"
9377 borderDistance 6
9378 ]
9379 ]
9380
9381 node
9382 [
9383 id 4
9384 graphics
9385 [
9386 w 50.6
9387 h 26
9388 type "rectangle"
9389 fill "#FFFFFF"
9390 fill2 "#FFFFFF"
9391 outline "#000000"
9392 ]
9393 LabelGraphics
9394 [
9395 text "false"
9396 outline "#000000"
9397 fill "#FFFFFF"
9398 fontSize 16
9399 fontName "Monospace"
9400 autoSizePolicy "node_width"
9401 anchor "t"
9402 borderDistance 0.0
9403 ]
9404 LabelGraphics
9405 [
9406 text "
9407 "
9408 fontSize 14
9409 fontName "Consolas"
9410 alignment "left"
9411 anchor "tl"
9412 borderDistance 6
9413 ]
9414 ]
9415
9416 node
9417 [
9418 id 5
9419 graphics
9420 [
9421 w 207.9
9422 h 40
9423 type "rectangle"
9424 fill "#FFFFFF"
9425 fill2 "#FFFFFF"
9426 outline "#000000"
9427 ]
9428 LabelGraphics
9429 [
9430 text "null"
9431 outline "#000000"
9432 fill "#FFFFFF"
9433 fontSize 16
9434 fontName "Monospace"
9435 autoSizePolicy "node_width"
9436 anchor "t"
9437 borderDistance 0.0
9438 ]
9439 LabelGraphics
9440 [
9441 text "
9442 FunctionalInterface class
9443 "
9444 fontSize 14
9445 fontName "Consolas"
9446 alignment "left"
9447 anchor "tl"
9448 borderDistance 6
9449 ]
9450 ]
9451
9452 node
9453 [
9454 id 6
9455 graphics
9456 [
9457 w 177.10000000000002
9458 h 54
9459 type "rectangle"
9460 fill "#FFFFFF"
9461 fill2 "#FFFFFF"
9462 outline "#000000"
9463 ]
9464 LabelGraphics
9465 [
9466 text "null"
9467 outline "#000000"
9468 fill "#FFFFFF"
9469 fontSize 16
9470 fontName "Monospace"
9471 autoSizePolicy "node_width"
9472 anchor "t"
9473 borderDistance 0.0
9474 ]
9475 LabelGraphics
9476 [
9477 text "
9478 FunctionalInput class
9479 FunctionalData class
9480 "
9481 fontSize 14
9482 fontName "Consolas"
9483 alignment "left"
9484 anchor "tl"
9485 borderDistance 6
9486 ]
9487 ]
9488
9489 node
9490 [
9491 id 7
9492 graphics
9493 [
9494 w 177.10000000000002
9495 h 54
9496 type "rectangle"
9497 fill "#FFFFFF"
9498 fill2 "#FFFFFF"
9499 outline "#000000"
9500 ]
9501 LabelGraphics
9502 [
9503 text "null"
9504 outline "#000000"
9505 fill "#FFFFFF"
9506 fontSize 16
9507 fontName "Monospace"
9508 autoSizePolicy "node_width"
9509 anchor "t"
9510 borderDistance 0.0
9511 ]
9512 LabelGraphics
9513 [
9514 text "
9515 FunctionalInput class
9516 FunctionalData class
9517 "
9518 fontSize 14
9519 fontName "Consolas"
9520 alignment "left"
9521 anchor "tl"
9522 borderDistance 6
9523 ]
9524 ]
9525
9526 node
9527 [
9528 id 8
9529 graphics
9530 [
9531 w 177.10000000000002
9532 h 54
9533 type "rectangle"
9534 fill "#FFFFFF"
9535 fill2 "#FFFFFF"
9536 outline "#000000"
9537 ]
9538 LabelGraphics
9539 [
9540 text "null"
9541 outline "#000000"
9542 fill "#FFFFFF"
9543 fontSize 16
9544 fontName "Monospace"
9545 autoSizePolicy "node_width"
9546 anchor "t"
9547 borderDistance 0.0
9548 ]
9549 LabelGraphics
9550 [
9551 text "
9552 FunctionalInput class
9553 FunctionalData class
9554 "
9555 fontSize 14
9556 fontName "Consolas"
9557 alignment "left"
9558 anchor "tl"
9559 borderDistance 6
9560 ]
9561 ]
9562
9563 node
9564 [
9565 id 9
9566 graphics
9567 [
9568 w 161.70000000000002
9569 h 40
9570 type "rectangle"
9571 fill "#FFFFFF"
9572 fill2 "#FFFFFF"
9573 outline "#000000"
9574 ]
9575 LabelGraphics
9576 [
9577 text "null"
9578 outline "#000000"
9579 fill "#FFFFFF"
9580 fontSize 16
9581 fontName "Monospace"
9582 autoSizePolicy "node_width"
9583 anchor "t"
9584 borderDistance 0.0
9585 ]
9586 LabelGraphics
9587 [
9588 text "
9589 FAMTerminator class
9590 "
9591 fontSize 14
9592 fontName "Consolas"
9593 alignment "left"
9594 anchor "tl"
9595 borderDistance 6
9596 ]
9597 ]
9598
9599 node
9600 [
9601 id 10
9602 graphics
9603 [
9604 w 177.10000000000002
9605 h 54
9606 type "rectangle"
9607 fill "#FFFFFF"
9608 fill2 "#FFFFFF"
9609 outline "#000000"
9610 ]
9611 LabelGraphics
9612 [
9613 text "null"
9614 outline "#000000"
9615 fill "#FFFFFF"
9616 fontSize 16
9617 fontName "Monospace"
9618 autoSizePolicy "node_width"
9619 anchor "t"
9620 borderDistance 0.0
9621 ]
9622 LabelGraphics
9623 [
9624 text "
9625 FunctionalInput class
9626 FunctionalData class
9627 "
9628 fontSize 14
9629 fontName "Consolas"
9630 alignment "left"
9631 anchor "tl"
9632 borderDistance 6
9633 ]
9634 ]
9635
9636 node
9637 [
9638 id 11
9639 graphics
9640 [
9641 w 177.10000000000002
9642 h 54
9643 type "rectangle"
9644 fill "#FFFFFF"
9645 fill2 "#FFFFFF"
9646 outline "#000000"
9647 ]
9648 LabelGraphics
9649 [
9650 text "null"
9651 outline "#000000"
9652 fill "#FFFFFF"
9653 fontSize 16
9654 fontName "Monospace"
9655 autoSizePolicy "node_width"
9656 anchor "t"
9657 borderDistance 0.0
9658 ]
9659 LabelGraphics
9660 [
9661 text "
9662 FunctionalInput class
9663 FunctionalData class
9664 "
9665 fontSize 14
9666 fontName "Consolas"
9667 alignment "left"
9668 anchor "tl"
9669 borderDistance 6
9670 ]
9671 ]
9672
9673 node
9674 [
9675 id 12
9676 graphics
9677 [
9678 w 112.2
9679 h 26
9680 type "rectangle"
9681 fill "#FFFFFF"
9682 fill2 "#FFFFFF"
9683 outline "#000000"
9684 ]
9685 LabelGraphics
9686 [
9687 text "New Integers"
9688 outline "#000000"
9689 fill "#FFFFFF"
9690 fontSize 16
9691 fontName "Monospace"
9692 autoSizePolicy "node_width"
9693 anchor "t"
9694 borderDistance 0.0
9695 ]
9696 LabelGraphics
9697 [
9698 text "
9699 "
9700 fontSize 14
9701 fontName "Consolas"
9702 alignment "left"
9703 anchor "tl"
9704 borderDistance 6
9705 ]
9706 ]
9707
9708 node
9709 [
9710 id 13
9711 graphics
9712 [
9713 w 85.80000000000001
9714 h 26
9715 type "rectangle"
9716 fill "#FFFFFF"
9717 fill2 "#FFFFFF"
9718 outline "#000000"
9719 ]
9720 LabelGraphics
9721 [
9722 text "New Reals"
9723 outline "#000000"
9724 fill "#FFFFFF"
9725 fontSize 16
9726 fontName "Monospace"
9727 autoSizePolicy "node_width"
9728 anchor "t"
9729 borderDistance 0.0
9730 ]
9731 LabelGraphics
9732 [
9733 text "
9734 "
9735 fontSize 14
9736 fontName "Consolas"
9737 alignment "left"
9738 anchor "tl"
9739 borderDistance 6
9740 ]
9741 ]
9742
9743 node
9744 [
9745 id 14
9746 graphics
9747 [
9748 w 103.4
9749 h 26
9750 type "rectangle"
9751 fill "#FFFFFF"
9752 fill2 "#FFFFFF"
9753 outline "#000000"
9754 ]
9755 LabelGraphics
9756 [
9757 text "New Strings"
9758 outline "#000000"
9759 fill "#FFFFFF"
9760 fontSize 16
9761 fontName "Monospace"
9762 autoSizePolicy "node_width"
9763 anchor "t"
9764 borderDistance 0.0
9765 ]
9766 LabelGraphics
9767 [
9768 text "
9769 "
9770 fontSize 14
9771 fontName "Consolas"
9772 alignment "left"
9773 anchor "tl"
9774 borderDistance 6
9775 ]
9776 ]
9777
9778 node
9779 [
9780 id 15
9781 graphics
9782 [
9783 w 103.4
9784 h 26
9785 type "rectangle"
9786 fill "#FFFFFF"
9787 fill2 "#FFFFFF"
9788 outline "#000000"
9789 ]
9790 LabelGraphics
9791 [
9792 text "New Objects"
9793 outline "#000000"
9794 fill "#FFFFFF"
9795 fontSize 16
9796 fontName "Monospace"
9797 autoSizePolicy "node_width"
9798 anchor "t"
9799 borderDistance 0.0
9800 ]
9801 LabelGraphics
9802 [
9803 text "
9804 "
9805 fontSize 14
9806 fontName "Consolas"
9807 alignment "left"
9808 anchor "tl"
9809 borderDistance 6
9810 ]
9811 ]
9812 edge
9813 [
9814 source 9
9815 target 8
9816 graphics
9817 [
9818 fill "#000000"
9819 targetArrow "standard"
9820 ]
9821 LabelGraphics
9822 [
9823 text "data reference FAMTerminator"
9824 fontSize 14
9825 fontName "Consolas"
9826 configuration "AutoFlippingLabel"
9827 model "six_pos"
9828 position "thead"
9829 ]
9830 ]
9831 edge
9832 [
9833 source 5
9834 target 6
9835 graphics
9836 [
9837 fill "#000000"
9838 width 3
9839 targetArrow "standard"
9840 ]
9841 LabelGraphics
9842 [
9843 text "data reference FunctionalInterface"
9844 fontSize 14
9845 fontName "Consolas"
9846 configuration "AutoFlippingLabel"
9847 model "six_pos"
9848 position "thead"
9849 ]
9850 ]
9851 edge
9852 [
9853 source 5
9854 target 7
9855 graphics
9856 [
9857 fill "#000000"
9858 width 3
9859 targetArrow "standard"
9860 ]
9861 LabelGraphics
9862 [
9863 text "data reference FunctionalInterface"
9864 fontSize 14
9865 fontName "Consolas"
9866 configuration "AutoFlippingLabel"
9867 model "six_pos"
9868 position "thead"
9869 ]
9870 ]
9871 edge
9872 [
9873 source 5
9874 target 8
9875 graphics
9876 [
9877 fill "#000000"
9878 width 3
9879 targetArrow "standard"
9880 ]
9881 LabelGraphics
9882 [
9883 text "data reference FunctionalInterface"
9884 fontSize 14
9885 fontName "Consolas"
9886 configuration "AutoFlippingLabel"
9887 model "six_pos"
9888 position "thead"
9889 ]
9890 ]
9891 edge
9892 [
9893 source 5
9894 target 10
9895 graphics
9896 [
9897 fill "#000000"
9898 width 3
9899 targetArrow "standard"
9900 ]
9901 LabelGraphics
9902 [
9903 text "data reference FunctionalInterface"
9904 fontSize 14
9905 fontName "Consolas"
9906 configuration "AutoFlippingLabel"
9907 model "six_pos"
9908 position "thead"
9909 ]
9910 ]
9911 edge
9912 [
9913 source 5
9914 target 11
9915 graphics
9916 [
9917 fill "#000000"
9918 width 3
9919 targetArrow "standard"
9920 ]
9921 LabelGraphics
9922 [
9923 text "data reference FunctionalInterface"
9924 fontSize 14
9925 fontName "Consolas"
9926 configuration "AutoFlippingLabel"
9927 model "six_pos"
9928 position "thead"
9929 ]
9930 ]
9931 edge
9932 [
9933 source 8
9934 target 9
9935 graphics
9936 [
9937 fill "#000000"
9938 width 3
9939 targetArrow "standard"
9940 ]
9941 LabelGraphics
9942 [
9943 text "terminator reference FunctionalData"
9944 fontSize 14
9945 fontName "Consolas"
9946 configuration "AutoFlippingLabel"
9947 model "six_pos"
9948 position "thead"
9949 ]
9950 ]
9951 edge
9952 [
9953 source 6
9954 target 5
9955 graphics
9956 [
9957 fill "#000000"
9958 targetArrow "standard"
9959 ]
9960 LabelGraphics
9961 [
9962 text "interface reference FunctionalData"
9963 fontSize 14
9964 fontName "Consolas"
9965 configuration "AutoFlippingLabel"
9966 model "six_pos"
9967 position "thead"
9968 ]
9969 ]
9970 edge
9971 [
9972 source 7
9973 target 5
9974 graphics
9975 [
9976 fill "#000000"
9977 targetArrow "standard"
9978 ]
9979 LabelGraphics
9980 [
9981 text "interface reference FunctionalData"
9982 fontSize 14
9983 fontName "Consolas"
9984 configuration "AutoFlippingLabel"
9985 model "six_pos"
9986 position "thead"
9987 ]
9988 ]
9989 edge
9990 [
9991 source 8
9992 target 5
9993 graphics
9994 [
9995 fill "#000000"
9996 targetArrow "standard"
9997 ]
9998 LabelGraphics
9999 [
10000 text "interface reference FunctionalData"
10001 fontSize 14
10002 fontName "Consolas"
10003 configuration "AutoFlippingLabel"
10004 model "six_pos"
10005 position "thead"
10006 ]
10007 ]
10008 edge
10009 [
10010 source 10
10011 target 5
10012 graphics
10013 [
10014 fill "#000000"
10015 targetArrow "standard"
10016 ]
10017 LabelGraphics
10018 [
10019 text "interface reference FunctionalData"
10020 fontSize 14
10021 fontName "Consolas"
10022 configuration "AutoFlippingLabel"
10023 model "six_pos"
10024 position "thead"
10025 ]
10026 ]
10027 edge
10028 [
10029 source 11
10030 target 5
10031 graphics
10032 [
10033 fill "#000000"
10034 targetArrow "standard"
10035 ]
10036 LabelGraphics
10037 [
10038 text "interface reference FunctionalData"
10039 fontSize 14
10040 fontName "Consolas"
10041 configuration "AutoFlippingLabel"
10042 model "six_pos"
10043 position "thead"
10044 ]
10045 ]
10046]
10047graph
10048[
10049 node
10050 [
10051 id 0
10052 graphics
10053 [
10054 w 226.60000000000002
10055 h 40
10056 type "rectangle"
10057 fill "#FFFFFF"
10058 fill2 "#FFFFFF"
10059 outline "#000000"
10060 ]
10061 LabelGraphics
10062 [
10063 text "Root literal FunctionType"
10064 outline "#000000"
10065 fill "#FFFFFF"
10066 fontSize 16
10067 fontName "Monospace"
10068 autoSizePolicy "node_width"
10069 anchor "t"
10070 borderDistance 0.0
10071 ]
10072 LabelGraphics
10073 [
10074 text "
10075 FunctionType enum
10076 "
10077 fontSize 14
10078 fontName "Consolas"
10079 alignment "left"
10080 anchor "tl"
10081 borderDistance 6
10082 ]
10083 ]
10084
10085 node
10086 [
10087 id 1
10088 graphics
10089 [
10090 w 297.0
10091 h 40
10092 type "rectangle"
10093 fill "#FFFFFF"
10094 fill2 "#FFFFFF"
10095 outline "#000000"
10096 ]
10097 LabelGraphics
10098 [
10099 text "Intermediate literal FunctionType"
10100 outline "#000000"
10101 fill "#FFFFFF"
10102 fontSize 16
10103 fontName "Monospace"
10104 autoSizePolicy "node_width"
10105 anchor "t"
10106 borderDistance 0.0
10107 ]
10108 LabelGraphics
10109 [
10110 text "
10111 FunctionType enum
10112 "
10113 fontSize 14
10114 fontName "Consolas"
10115 alignment "left"
10116 anchor "tl"
10117 borderDistance 6
10118 ]
10119 ]
10120
10121 node
10122 [
10123 id 2
10124 graphics
10125 [
10126 w 226.60000000000002
10127 h 40
10128 type "rectangle"
10129 fill "#FFFFFF"
10130 fill2 "#FFFFFF"
10131 outline "#000000"
10132 ]
10133 LabelGraphics
10134 [
10135 text "Leaf literal FunctionType"
10136 outline "#000000"
10137 fill "#FFFFFF"
10138 fontSize 16
10139 fontName "Monospace"
10140 autoSizePolicy "node_width"
10141 anchor "t"
10142 borderDistance 0.0
10143 ]
10144 LabelGraphics
10145 [
10146 text "
10147 FunctionType enum
10148 "
10149 fontSize 14
10150 fontName "Consolas"
10151 alignment "left"
10152 anchor "tl"
10153 borderDistance 6
10154 ]
10155 ]
10156
10157 node
10158 [
10159 id 3
10160 graphics
10161 [
10162 w 361.90000000000003
10163 h 54
10164 type "rectangle"
10165 fill "#FFFFFF"
10166 fill2 "#FFFFFF"
10167 outline "#000000"
10168 ]
10169 LabelGraphics
10170 [
10171 text "o 1"
10172 outline "#000000"
10173 fill "#FFFFFF"
10174 fontSize 16
10175 fontName "Monospace"
10176 autoSizePolicy "node_width"
10177 anchor "t"
10178 borderDistance 0.0
10179 ]
10180 LabelGraphics
10181 [
10182 text "
10183 FunctionalArchitectureModel class DefinedPart
10184 FunctionalArchitectureModel class
10185 "
10186 fontSize 14
10187 fontName "Consolas"
10188 alignment "left"
10189 anchor "tl"
10190 borderDistance 6
10191 ]
10192 ]
10193
10194 node
10195 [
10196 id 4
10197 graphics
10198 [
10199 w 41.800000000000004
10200 h 26
10201 type "rectangle"
10202 fill "#FFFFFF"
10203 fill2 "#FFFFFF"
10204 outline "#000000"
10205 ]
10206 LabelGraphics
10207 [
10208 text "true"
10209 outline "#000000"
10210 fill "#FFFFFF"
10211 fontSize 16
10212 fontName "Monospace"
10213 autoSizePolicy "node_width"
10214 anchor "t"
10215 borderDistance 0.0
10216 ]
10217 LabelGraphics
10218 [
10219 text "
10220 "
10221 fontSize 14
10222 fontName "Consolas"
10223 alignment "left"
10224 anchor "tl"
10225 borderDistance 6
10226 ]
10227 ]
10228
10229 node
10230 [
10231 id 5
10232 graphics
10233 [
10234 w 50.6
10235 h 26
10236 type "rectangle"
10237 fill "#FFFFFF"
10238 fill2 "#FFFFFF"
10239 outline "#000000"
10240 ]
10241 LabelGraphics
10242 [
10243 text "false"
10244 outline "#000000"
10245 fill "#FFFFFF"
10246 fontSize 16
10247 fontName "Monospace"
10248 autoSizePolicy "node_width"
10249 anchor "t"
10250 borderDistance 0.0
10251 ]
10252 LabelGraphics
10253 [
10254 text "
10255 "
10256 fontSize 14
10257 fontName "Consolas"
10258 alignment "left"
10259 anchor "tl"
10260 borderDistance 6
10261 ]
10262 ]
10263
10264 node
10265 [
10266 id 6
10267 graphics
10268 [
10269 w 192.50000000000003
10270 h 54
10271 type "rectangle"
10272 fill "#FFFFFF"
10273 fill2 "#FFFFFF"
10274 outline "#000000"
10275 ]
10276 LabelGraphics
10277 [
10278 text "null"
10279 outline "#000000"
10280 fill "#FFFFFF"
10281 fontSize 16
10282 fontName "Monospace"
10283 autoSizePolicy "node_width"
10284 anchor "t"
10285 borderDistance 0.0
10286 ]
10287 LabelGraphics
10288 [
10289 text "
10290 FunctionalElement class
10291 Function class
10292 "
10293 fontSize 14
10294 fontName "Consolas"
10295 alignment "left"
10296 anchor "tl"
10297 borderDistance 6
10298 ]
10299 ]
10300
10301 node
10302 [
10303 id 7
10304 graphics
10305 [
10306 w 207.9
10307 h 40
10308 type "rectangle"
10309 fill "#FFFFFF"
10310 fill2 "#FFFFFF"
10311 outline "#000000"
10312 ]
10313 LabelGraphics
10314 [
10315 text "null"
10316 outline "#000000"
10317 fill "#FFFFFF"
10318 fontSize 16
10319 fontName "Monospace"
10320 autoSizePolicy "node_width"
10321 anchor "t"
10322 borderDistance 0.0
10323 ]
10324 LabelGraphics
10325 [
10326 text "
10327 FunctionalInterface class
10328 "
10329 fontSize 14
10330 fontName "Consolas"
10331 alignment "left"
10332 anchor "tl"
10333 borderDistance 6
10334 ]
10335 ]
10336
10337 node
10338 [
10339 id 8
10340 graphics
10341 [
10342 w 184.8
10343 h 54
10344 type "rectangle"
10345 fill "#FFFFFF"
10346 fill2 "#FFFFFF"
10347 outline "#000000"
10348 ]
10349 LabelGraphics
10350 [
10351 text "null"
10352 outline "#000000"
10353 fill "#FFFFFF"
10354 fontSize 16
10355 fontName "Monospace"
10356 autoSizePolicy "node_width"
10357 anchor "t"
10358 borderDistance 0.0
10359 ]
10360 LabelGraphics
10361 [
10362 text "
10363 FunctionalOutput class
10364 FunctionalData class
10365 "
10366 fontSize 14
10367 fontName "Consolas"
10368 alignment "left"
10369 anchor "tl"
10370 borderDistance 6
10371 ]
10372 ]
10373
10374 node
10375 [
10376 id 9
10377 graphics
10378 [
10379 w 177.10000000000002
10380 h 40
10381 type "rectangle"
10382 fill "#FFFFFF"
10383 fill2 "#FFFFFF"
10384 outline "#000000"
10385 ]
10386 LabelGraphics
10387 [
10388 text "null"
10389 outline "#000000"
10390 fill "#FFFFFF"
10391 fontSize 16
10392 fontName "Monospace"
10393 autoSizePolicy "node_width"
10394 anchor "t"
10395 borderDistance 0.0
10396 ]
10397 LabelGraphics
10398 [
10399 text "
10400 InformationLink class
10401 "
10402 fontSize 14
10403 fontName "Consolas"
10404 alignment "left"
10405 anchor "tl"
10406 borderDistance 6
10407 ]
10408 ]
10409
10410 node
10411 [
10412 id 10
10413 graphics
10414 [
10415 w 177.10000000000002
10416 h 54
10417 type "rectangle"
10418 fill "#FFFFFF"
10419 fill2 "#FFFFFF"
10420 outline "#000000"
10421 ]
10422 LabelGraphics
10423 [
10424 text "null"
10425 outline "#000000"
10426 fill "#FFFFFF"
10427 fontSize 16
10428 fontName "Monospace"
10429 autoSizePolicy "node_width"
10430 anchor "t"
10431 borderDistance 0.0
10432 ]
10433 LabelGraphics
10434 [
10435 text "
10436 FunctionalInput class
10437 FunctionalData class
10438 "
10439 fontSize 14
10440 fontName "Consolas"
10441 alignment "left"
10442 anchor "tl"
10443 borderDistance 6
10444 ]
10445 ]
10446
10447 node
10448 [
10449 id 11
10450 graphics
10451 [
10452 w 177.10000000000002
10453 h 54
10454 type "rectangle"
10455 fill "#FFFFFF"
10456 fill2 "#FFFFFF"
10457 outline "#000000"
10458 ]
10459 LabelGraphics
10460 [
10461 text "null"
10462 outline "#000000"
10463 fill "#FFFFFF"
10464 fontSize 16
10465 fontName "Monospace"
10466 autoSizePolicy "node_width"
10467 anchor "t"
10468 borderDistance 0.0
10469 ]
10470 LabelGraphics
10471 [
10472 text "
10473 FunctionalInput class
10474 FunctionalData class
10475 "
10476 fontSize 14
10477 fontName "Consolas"
10478 alignment "left"
10479 anchor "tl"
10480 borderDistance 6
10481 ]
10482 ]
10483
10484 node
10485 [
10486 id 12
10487 graphics
10488 [
10489 w 112.2
10490 h 26
10491 type "rectangle"
10492 fill "#FFFFFF"
10493 fill2 "#FFFFFF"
10494 outline "#000000"
10495 ]
10496 LabelGraphics
10497 [
10498 text "New Integers"
10499 outline "#000000"
10500 fill "#FFFFFF"
10501 fontSize 16
10502 fontName "Monospace"
10503 autoSizePolicy "node_width"
10504 anchor "t"
10505 borderDistance 0.0
10506 ]
10507 LabelGraphics
10508 [
10509 text "
10510 "
10511 fontSize 14
10512 fontName "Consolas"
10513 alignment "left"
10514 anchor "tl"
10515 borderDistance 6
10516 ]
10517 ]
10518
10519 node
10520 [
10521 id 13
10522 graphics
10523 [
10524 w 85.80000000000001
10525 h 26
10526 type "rectangle"
10527 fill "#FFFFFF"
10528 fill2 "#FFFFFF"
10529 outline "#000000"
10530 ]
10531 LabelGraphics
10532 [
10533 text "New Reals"
10534 outline "#000000"
10535 fill "#FFFFFF"
10536 fontSize 16
10537 fontName "Monospace"
10538 autoSizePolicy "node_width"
10539 anchor "t"
10540 borderDistance 0.0
10541 ]
10542 LabelGraphics
10543 [
10544 text "
10545 "
10546 fontSize 14
10547 fontName "Consolas"
10548 alignment "left"
10549 anchor "tl"
10550 borderDistance 6
10551 ]
10552 ]
10553
10554 node
10555 [
10556 id 14
10557 graphics
10558 [
10559 w 103.4
10560 h 26
10561 type "rectangle"
10562 fill "#FFFFFF"
10563 fill2 "#FFFFFF"
10564 outline "#000000"
10565 ]
10566 LabelGraphics
10567 [
10568 text "New Strings"
10569 outline "#000000"
10570 fill "#FFFFFF"
10571 fontSize 16
10572 fontName "Monospace"
10573 autoSizePolicy "node_width"
10574 anchor "t"
10575 borderDistance 0.0
10576 ]
10577 LabelGraphics
10578 [
10579 text "
10580 "
10581 fontSize 14
10582 fontName "Consolas"
10583 alignment "left"
10584 anchor "tl"
10585 borderDistance 6
10586 ]
10587 ]
10588
10589 node
10590 [
10591 id 15
10592 graphics
10593 [
10594 w 103.4
10595 h 26
10596 type "rectangle"
10597 fill "#FFFFFF"
10598 fill2 "#FFFFFF"
10599 outline "#000000"
10600 ]
10601 LabelGraphics
10602 [
10603 text "New Objects"
10604 outline "#000000"
10605 fill "#FFFFFF"
10606 fontSize 16
10607 fontName "Monospace"
10608 autoSizePolicy "node_width"
10609 anchor "t"
10610 borderDistance 0.0
10611 ]
10612 LabelGraphics
10613 [
10614 text "
10615 "
10616 fontSize 14
10617 fontName "Consolas"
10618 alignment "left"
10619 anchor "tl"
10620 borderDistance 6
10621 ]
10622 ]
10623 edge
10624 [
10625 source 6
10626 target 7
10627 graphics
10628 [
10629 fill "#000000"
10630 width 3
10631 targetArrow "standard"
10632 ]
10633 LabelGraphics
10634 [
10635 text "interface reference FunctionalElement"
10636 fontSize 14
10637 fontName "Consolas"
10638 configuration "AutoFlippingLabel"
10639 model "six_pos"
10640 position "thead"
10641 ]
10642 ]
10643 edge
10644 [
10645 source 6
10646 target 3
10647 graphics
10648 [
10649 fill "#000000"
10650 targetArrow "standard"
10651 ]
10652 LabelGraphics
10653 [
10654 text "model reference FunctionalElement"
10655 fontSize 14
10656 fontName "Consolas"
10657 configuration "AutoFlippingLabel"
10658 model "six_pos"
10659 position "thead"
10660 ]
10661 ]
10662 edge
10663 [
10664 source 3
10665 target 6
10666 graphics
10667 [
10668 fill "#000000"
10669 width 3
10670 targetArrow "standard"
10671 ]
10672 LabelGraphics
10673 [
10674 text "rootElements reference FunctionalArchitectureModel"
10675 fontSize 14
10676 fontName "Consolas"
10677 configuration "AutoFlippingLabel"
10678 model "six_pos"
10679 position "thead"
10680 ]
10681 ]
10682 edge
10683 [
10684 source 9
10685 target 8
10686 graphics
10687 [
10688 fill "#000000"
10689 targetArrow "standard"
10690 ]
10691 LabelGraphics
10692 [
10693 text "from reference InformationLink"
10694 fontSize 14
10695 fontName "Consolas"
10696 configuration "AutoFlippingLabel"
10697 model "six_pos"
10698 position "thead"
10699 ]
10700 ]
10701 edge
10702 [
10703 source 9
10704 target 10
10705 graphics
10706 [
10707 fill "#000000"
10708 targetArrow "standard"
10709 ]
10710 LabelGraphics
10711 [
10712 text "to reference InformationLink"
10713 fontSize 14
10714 fontName "Consolas"
10715 configuration "AutoFlippingLabel"
10716 model "six_pos"
10717 position "thead"
10718 ]
10719 ]
10720 edge
10721 [
10722 source 7
10723 target 8
10724 graphics
10725 [
10726 fill "#000000"
10727 width 3
10728 targetArrow "standard"
10729 ]
10730 LabelGraphics
10731 [
10732 text "data reference FunctionalInterface"
10733 fontSize 14
10734 fontName "Consolas"
10735 configuration "AutoFlippingLabel"
10736 model "six_pos"
10737 position "thead"
10738 ]
10739 ]
10740 edge
10741 [
10742 source 7
10743 target 10
10744 graphics
10745 [
10746 fill "#000000"
10747 width 3
10748 targetArrow "standard"
10749 ]
10750 LabelGraphics
10751 [
10752 text "data reference FunctionalInterface"
10753 fontSize 14
10754 fontName "Consolas"
10755 configuration "AutoFlippingLabel"
10756 model "six_pos"
10757 position "thead"
10758 ]
10759 ]
10760 edge
10761 [
10762 source 7
10763 target 11
10764 graphics
10765 [
10766 fill "#000000"
10767 width 3
10768 targetArrow "standard"
10769 ]
10770 LabelGraphics
10771 [
10772 text "data reference FunctionalInterface"
10773 fontSize 14
10774 fontName "Consolas"
10775 configuration "AutoFlippingLabel"
10776 model "six_pos"
10777 position "thead"
10778 ]
10779 ]
10780 edge
10781 [
10782 source 7
10783 target 6
10784 graphics
10785 [
10786 fill "#000000"
10787 targetArrow "standard"
10788 ]
10789 LabelGraphics
10790 [
10791 text "element reference FunctionalInterface"
10792 fontSize 14
10793 fontName "Consolas"
10794 configuration "AutoFlippingLabel"
10795 model "six_pos"
10796 position "thead"
10797 ]
10798 ]
10799 edge
10800 [
10801 source 10
10802 target 9
10803 graphics
10804 [
10805 fill "#000000"
10806 targetArrow "standard"
10807 ]
10808 LabelGraphics
10809 [
10810 text "IncomingLinks reference FunctionalInput"
10811 fontSize 14
10812 fontName "Consolas"
10813 configuration "AutoFlippingLabel"
10814 model "six_pos"
10815 position "thead"
10816 ]
10817 ]
10818 edge
10819 [
10820 source 8
10821 target 9
10822 graphics
10823 [
10824 fill "#000000"
10825 width 3
10826 targetArrow "standard"
10827 ]
10828 LabelGraphics
10829 [
10830 text "outgoingLinks reference FunctionalOutput"
10831 fontSize 14
10832 fontName "Consolas"
10833 configuration "AutoFlippingLabel"
10834 model "six_pos"
10835 position "thead"
10836 ]
10837 ]
10838 edge
10839 [
10840 source 8
10841 target 7
10842 graphics
10843 [
10844 fill "#000000"
10845 targetArrow "standard"
10846 ]
10847 LabelGraphics
10848 [
10849 text "interface reference FunctionalData"
10850 fontSize 14
10851 fontName "Consolas"
10852 configuration "AutoFlippingLabel"
10853 model "six_pos"
10854 position "thead"
10855 ]
10856 ]
10857 edge
10858 [
10859 source 10
10860 target 7
10861 graphics
10862 [
10863 fill "#000000"
10864 targetArrow "standard"
10865 ]
10866 LabelGraphics
10867 [
10868 text "interface reference FunctionalData"
10869 fontSize 14
10870 fontName "Consolas"
10871 configuration "AutoFlippingLabel"
10872 model "six_pos"
10873 position "thead"
10874 ]
10875 ]
10876 edge
10877 [
10878 source 11
10879 target 7
10880 graphics
10881 [
10882 fill "#000000"
10883 targetArrow "standard"
10884 ]
10885 LabelGraphics
10886 [
10887 text "interface reference FunctionalData"
10888 fontSize 14
10889 fontName "Consolas"
10890 configuration "AutoFlippingLabel"
10891 model "six_pos"
10892 position "thead"
10893 ]
10894 ]
10895 edge
10896 [
10897 source 6
10898 target 0
10899 graphics
10900 [
10901 fill "#000000"
10902 targetArrow "standard"
10903 ]
10904 LabelGraphics
10905 [
10906 text "type attribute Function"
10907 fontSize 14
10908 fontName "Consolas"
10909 configuration "AutoFlippingLabel"
10910 model "six_pos"
10911 position "thead"
10912 ]
10913 ]
10914]
10915graph
10916[
10917 node
10918 [
10919 id 0
10920 graphics
10921 [
10922 w 226.60000000000002
10923 h 40
10924 type "rectangle"
10925 fill "#FFFFFF"
10926 fill2 "#FFFFFF"
10927 outline "#000000"
10928 ]
10929 LabelGraphics
10930 [
10931 text "Root literal FunctionType"
10932 outline "#000000"
10933 fill "#FFFFFF"
10934 fontSize 16
10935 fontName "Monospace"
10936 autoSizePolicy "node_width"
10937 anchor "t"
10938 borderDistance 0.0
10939 ]
10940 LabelGraphics
10941 [
10942 text "
10943 FunctionType enum
10944 "
10945 fontSize 14
10946 fontName "Consolas"
10947 alignment "left"
10948 anchor "tl"
10949 borderDistance 6
10950 ]
10951 ]
10952
10953 node
10954 [
10955 id 1
10956 graphics
10957 [
10958 w 297.0
10959 h 40
10960 type "rectangle"
10961 fill "#FFFFFF"
10962 fill2 "#FFFFFF"
10963 outline "#000000"
10964 ]
10965 LabelGraphics
10966 [
10967 text "Intermediate literal FunctionType"
10968 outline "#000000"
10969 fill "#FFFFFF"
10970 fontSize 16
10971 fontName "Monospace"
10972 autoSizePolicy "node_width"
10973 anchor "t"
10974 borderDistance 0.0
10975 ]
10976 LabelGraphics
10977 [
10978 text "
10979 FunctionType enum
10980 "
10981 fontSize 14
10982 fontName "Consolas"
10983 alignment "left"
10984 anchor "tl"
10985 borderDistance 6
10986 ]
10987 ]
10988
10989 node
10990 [
10991 id 2
10992 graphics
10993 [
10994 w 226.60000000000002
10995 h 40
10996 type "rectangle"
10997 fill "#FFFFFF"
10998 fill2 "#FFFFFF"
10999 outline "#000000"
11000 ]
11001 LabelGraphics
11002 [
11003 text "Leaf literal FunctionType"
11004 outline "#000000"
11005 fill "#FFFFFF"
11006 fontSize 16
11007 fontName "Monospace"
11008 autoSizePolicy "node_width"
11009 anchor "t"
11010 borderDistance 0.0
11011 ]
11012 LabelGraphics
11013 [
11014 text "
11015 FunctionType enum
11016 "
11017 fontSize 14
11018 fontName "Consolas"
11019 alignment "left"
11020 anchor "tl"
11021 borderDistance 6
11022 ]
11023 ]
11024
11025 node
11026 [
11027 id 3
11028 graphics
11029 [
11030 w 361.90000000000003
11031 h 54
11032 type "rectangle"
11033 fill "#FFFFFF"
11034 fill2 "#FFFFFF"
11035 outline "#000000"
11036 ]
11037 LabelGraphics
11038 [
11039 text "o 1"
11040 outline "#000000"
11041 fill "#FFFFFF"
11042 fontSize 16
11043 fontName "Monospace"
11044 autoSizePolicy "node_width"
11045 anchor "t"
11046 borderDistance 0.0
11047 ]
11048 LabelGraphics
11049 [
11050 text "
11051 FunctionalArchitectureModel class DefinedPart
11052 FunctionalArchitectureModel class
11053 "
11054 fontSize 14
11055 fontName "Consolas"
11056 alignment "left"
11057 anchor "tl"
11058 borderDistance 6
11059 ]
11060 ]
11061
11062 node
11063 [
11064 id 4
11065 graphics
11066 [
11067 w 41.800000000000004
11068 h 26
11069 type "rectangle"
11070 fill "#FFFFFF"
11071 fill2 "#FFFFFF"
11072 outline "#000000"
11073 ]
11074 LabelGraphics
11075 [
11076 text "true"
11077 outline "#000000"
11078 fill "#FFFFFF"
11079 fontSize 16
11080 fontName "Monospace"
11081 autoSizePolicy "node_width"
11082 anchor "t"
11083 borderDistance 0.0
11084 ]
11085 LabelGraphics
11086 [
11087 text "
11088 "
11089 fontSize 14
11090 fontName "Consolas"
11091 alignment "left"
11092 anchor "tl"
11093 borderDistance 6
11094 ]
11095 ]
11096
11097 node
11098 [
11099 id 5
11100 graphics
11101 [
11102 w 50.6
11103 h 26
11104 type "rectangle"
11105 fill "#FFFFFF"
11106 fill2 "#FFFFFF"
11107 outline "#000000"
11108 ]
11109 LabelGraphics
11110 [
11111 text "false"
11112 outline "#000000"
11113 fill "#FFFFFF"
11114 fontSize 16
11115 fontName "Monospace"
11116 autoSizePolicy "node_width"
11117 anchor "t"
11118 borderDistance 0.0
11119 ]
11120 LabelGraphics
11121 [
11122 text "
11123 "
11124 fontSize 14
11125 fontName "Consolas"
11126 alignment "left"
11127 anchor "tl"
11128 borderDistance 6
11129 ]
11130 ]
11131
11132 node
11133 [
11134 id 6
11135 graphics
11136 [
11137 w 192.50000000000003
11138 h 54
11139 type "rectangle"
11140 fill "#FFFFFF"
11141 fill2 "#FFFFFF"
11142 outline "#000000"
11143 ]
11144 LabelGraphics
11145 [
11146 text "null"
11147 outline "#000000"
11148 fill "#FFFFFF"
11149 fontSize 16
11150 fontName "Monospace"
11151 autoSizePolicy "node_width"
11152 anchor "t"
11153 borderDistance 0.0
11154 ]
11155 LabelGraphics
11156 [
11157 text "
11158 FunctionalElement class
11159 Function class
11160 "
11161 fontSize 14
11162 fontName "Consolas"
11163 alignment "left"
11164 anchor "tl"
11165 borderDistance 6
11166 ]
11167 ]
11168
11169 node
11170 [
11171 id 7
11172 graphics
11173 [
11174 w 207.9
11175 h 40
11176 type "rectangle"
11177 fill "#FFFFFF"
11178 fill2 "#FFFFFF"
11179 outline "#000000"
11180 ]
11181 LabelGraphics
11182 [
11183 text "null"
11184 outline "#000000"
11185 fill "#FFFFFF"
11186 fontSize 16
11187 fontName "Monospace"
11188 autoSizePolicy "node_width"
11189 anchor "t"
11190 borderDistance 0.0
11191 ]
11192 LabelGraphics
11193 [
11194 text "
11195 FunctionalInterface class
11196 "
11197 fontSize 14
11198 fontName "Consolas"
11199 alignment "left"
11200 anchor "tl"
11201 borderDistance 6
11202 ]
11203 ]
11204
11205 node
11206 [
11207 id 8
11208 graphics
11209 [
11210 w 184.8
11211 h 54
11212 type "rectangle"
11213 fill "#FFFFFF"
11214 fill2 "#FFFFFF"
11215 outline "#000000"
11216 ]
11217 LabelGraphics
11218 [
11219 text "null"
11220 outline "#000000"
11221 fill "#FFFFFF"
11222 fontSize 16
11223 fontName "Monospace"
11224 autoSizePolicy "node_width"
11225 anchor "t"
11226 borderDistance 0.0
11227 ]
11228 LabelGraphics
11229 [
11230 text "
11231 FunctionalOutput class
11232 FunctionalData class
11233 "
11234 fontSize 14
11235 fontName "Consolas"
11236 alignment "left"
11237 anchor "tl"
11238 borderDistance 6
11239 ]
11240 ]
11241
11242 node
11243 [
11244 id 9
11245 graphics
11246 [
11247 w 161.70000000000002
11248 h 40
11249 type "rectangle"
11250 fill "#FFFFFF"
11251 fill2 "#FFFFFF"
11252 outline "#000000"
11253 ]
11254 LabelGraphics
11255 [
11256 text "null"
11257 outline "#000000"
11258 fill "#FFFFFF"
11259 fontSize 16
11260 fontName "Monospace"
11261 autoSizePolicy "node_width"
11262 anchor "t"
11263 borderDistance 0.0
11264 ]
11265 LabelGraphics
11266 [
11267 text "
11268 FAMTerminator class
11269 "
11270 fontSize 14
11271 fontName "Consolas"
11272 alignment "left"
11273 anchor "tl"
11274 borderDistance 6
11275 ]
11276 ]
11277
11278 node
11279 [
11280 id 10
11281 graphics
11282 [
11283 w 184.8
11284 h 54
11285 type "rectangle"
11286 fill "#FFFFFF"
11287 fill2 "#FFFFFF"
11288 outline "#000000"
11289 ]
11290 LabelGraphics
11291 [
11292 text "null"
11293 outline "#000000"
11294 fill "#FFFFFF"
11295 fontSize 16
11296 fontName "Monospace"
11297 autoSizePolicy "node_width"
11298 anchor "t"
11299 borderDistance 0.0
11300 ]
11301 LabelGraphics
11302 [
11303 text "
11304 FunctionalOutput class
11305 FunctionalData class
11306 "
11307 fontSize 14
11308 fontName "Consolas"
11309 alignment "left"
11310 anchor "tl"
11311 borderDistance 6
11312 ]
11313 ]
11314
11315 node
11316 [
11317 id 11
11318 graphics
11319 [
11320 w 192.50000000000003
11321 h 54
11322 type "rectangle"
11323 fill "#FFFFFF"
11324 fill2 "#FFFFFF"
11325 outline "#000000"
11326 ]
11327 LabelGraphics
11328 [
11329 text "null"
11330 outline "#000000"
11331 fill "#FFFFFF"
11332 fontSize 16
11333 fontName "Monospace"
11334 autoSizePolicy "node_width"
11335 anchor "t"
11336 borderDistance 0.0
11337 ]
11338 LabelGraphics
11339 [
11340 text "
11341 FunctionalElement class
11342 Function class
11343 "
11344 fontSize 14
11345 fontName "Consolas"
11346 alignment "left"
11347 anchor "tl"
11348 borderDistance 6
11349 ]
11350 ]
11351
11352 node
11353 [
11354 id 12
11355 graphics
11356 [
11357 w 112.2
11358 h 26
11359 type "rectangle"
11360 fill "#FFFFFF"
11361 fill2 "#FFFFFF"
11362 outline "#000000"
11363 ]
11364 LabelGraphics
11365 [
11366 text "New Integers"
11367 outline "#000000"
11368 fill "#FFFFFF"
11369 fontSize 16
11370 fontName "Monospace"
11371 autoSizePolicy "node_width"
11372 anchor "t"
11373 borderDistance 0.0
11374 ]
11375 LabelGraphics
11376 [
11377 text "
11378 "
11379 fontSize 14
11380 fontName "Consolas"
11381 alignment "left"
11382 anchor "tl"
11383 borderDistance 6
11384 ]
11385 ]
11386
11387 node
11388 [
11389 id 13
11390 graphics
11391 [
11392 w 85.80000000000001
11393 h 26
11394 type "rectangle"
11395 fill "#FFFFFF"
11396 fill2 "#FFFFFF"
11397 outline "#000000"
11398 ]
11399 LabelGraphics
11400 [
11401 text "New Reals"
11402 outline "#000000"
11403 fill "#FFFFFF"
11404 fontSize 16
11405 fontName "Monospace"
11406 autoSizePolicy "node_width"
11407 anchor "t"
11408 borderDistance 0.0
11409 ]
11410 LabelGraphics
11411 [
11412 text "
11413 "
11414 fontSize 14
11415 fontName "Consolas"
11416 alignment "left"
11417 anchor "tl"
11418 borderDistance 6
11419 ]
11420 ]
11421
11422 node
11423 [
11424 id 14
11425 graphics
11426 [
11427 w 103.4
11428 h 26
11429 type "rectangle"
11430 fill "#FFFFFF"
11431 fill2 "#FFFFFF"
11432 outline "#000000"
11433 ]
11434 LabelGraphics
11435 [
11436 text "New Strings"
11437 outline "#000000"
11438 fill "#FFFFFF"
11439 fontSize 16
11440 fontName "Monospace"
11441 autoSizePolicy "node_width"
11442 anchor "t"
11443 borderDistance 0.0
11444 ]
11445 LabelGraphics
11446 [
11447 text "
11448 "
11449 fontSize 14
11450 fontName "Consolas"
11451 alignment "left"
11452 anchor "tl"
11453 borderDistance 6
11454 ]
11455 ]
11456
11457 node
11458 [
11459 id 15
11460 graphics
11461 [
11462 w 103.4
11463 h 26
11464 type "rectangle"
11465 fill "#FFFFFF"
11466 fill2 "#FFFFFF"
11467 outline "#000000"
11468 ]
11469 LabelGraphics
11470 [
11471 text "New Objects"
11472 outline "#000000"
11473 fill "#FFFFFF"
11474 fontSize 16
11475 fontName "Monospace"
11476 autoSizePolicy "node_width"
11477 anchor "t"
11478 borderDistance 0.0
11479 ]
11480 LabelGraphics
11481 [
11482 text "
11483 "
11484 fontSize 14
11485 fontName "Consolas"
11486 alignment "left"
11487 anchor "tl"
11488 borderDistance 6
11489 ]
11490 ]
11491 edge
11492 [
11493 source 6
11494 target 7
11495 graphics
11496 [
11497 fill "#000000"
11498 width 3
11499 targetArrow "standard"
11500 ]
11501 LabelGraphics
11502 [
11503 text "interface reference FunctionalElement"
11504 fontSize 14
11505 fontName "Consolas"
11506 configuration "AutoFlippingLabel"
11507 model "six_pos"
11508 position "thead"
11509 ]
11510 ]
11511 edge
11512 [
11513 source 6
11514 target 3
11515 graphics
11516 [
11517 fill "#000000"
11518 targetArrow "standard"
11519 ]
11520 LabelGraphics
11521 [
11522 text "model reference FunctionalElement"
11523 fontSize 14
11524 fontName "Consolas"
11525 configuration "AutoFlippingLabel"
11526 model "six_pos"
11527 position "thead"
11528 ]
11529 ]
11530 edge
11531 [
11532 source 11
11533 target 3
11534 graphics
11535 [
11536 fill "#000000"
11537 targetArrow "standard"
11538 ]
11539 LabelGraphics
11540 [
11541 text "model reference FunctionalElement"
11542 fontSize 14
11543 fontName "Consolas"
11544 configuration "AutoFlippingLabel"
11545 model "six_pos"
11546 position "thead"
11547 ]
11548 ]
11549 edge
11550 [
11551 source 3
11552 target 6
11553 graphics
11554 [
11555 fill "#000000"
11556 width 3
11557 targetArrow "standard"
11558 ]
11559 LabelGraphics
11560 [
11561 text "rootElements reference FunctionalArchitectureModel"
11562 fontSize 14
11563 fontName "Consolas"
11564 configuration "AutoFlippingLabel"
11565 model "six_pos"
11566 position "thead"
11567 ]
11568 ]
11569 edge
11570 [
11571 source 3
11572 target 11
11573 graphics
11574 [
11575 fill "#000000"
11576 width 3
11577 targetArrow "standard"
11578 ]
11579 LabelGraphics
11580 [
11581 text "rootElements reference FunctionalArchitectureModel"
11582 fontSize 14
11583 fontName "Consolas"
11584 configuration "AutoFlippingLabel"
11585 model "six_pos"
11586 position "thead"
11587 ]
11588 ]
11589 edge
11590 [
11591 source 9
11592 target 8
11593 graphics
11594 [
11595 fill "#000000"
11596 targetArrow "standard"
11597 ]
11598 LabelGraphics
11599 [
11600 text "data reference FAMTerminator"
11601 fontSize 14
11602 fontName "Consolas"
11603 configuration "AutoFlippingLabel"
11604 model "six_pos"
11605 position "thead"
11606 ]
11607 ]
11608 edge
11609 [
11610 source 7
11611 target 8
11612 graphics
11613 [
11614 fill "#000000"
11615 width 3
11616 targetArrow "standard"
11617 ]
11618 LabelGraphics
11619 [
11620 text "data reference FunctionalInterface"
11621 fontSize 14
11622 fontName "Consolas"
11623 configuration "AutoFlippingLabel"
11624 model "six_pos"
11625 position "thead"
11626 ]
11627 ]
11628 edge
11629 [
11630 source 7
11631 target 10
11632 graphics
11633 [
11634 fill "#000000"
11635 width 3
11636 targetArrow "standard"
11637 ]
11638 LabelGraphics
11639 [
11640 text "data reference FunctionalInterface"
11641 fontSize 14
11642 fontName "Consolas"
11643 configuration "AutoFlippingLabel"
11644 model "six_pos"
11645 position "thead"
11646 ]
11647 ]
11648 edge
11649 [
11650 source 7
11651 target 6
11652 graphics
11653 [
11654 fill "#000000"
11655 targetArrow "standard"
11656 ]
11657 LabelGraphics
11658 [
11659 text "element reference FunctionalInterface"
11660 fontSize 14
11661 fontName "Consolas"
11662 configuration "AutoFlippingLabel"
11663 model "six_pos"
11664 position "thead"
11665 ]
11666 ]
11667 edge
11668 [
11669 source 8
11670 target 9
11671 graphics
11672 [
11673 fill "#000000"
11674 width 3
11675 targetArrow "standard"
11676 ]
11677 LabelGraphics
11678 [
11679 text "terminator reference FunctionalData"
11680 fontSize 14
11681 fontName "Consolas"
11682 configuration "AutoFlippingLabel"
11683 model "six_pos"
11684 position "thead"
11685 ]
11686 ]
11687 edge
11688 [
11689 source 8
11690 target 7
11691 graphics
11692 [
11693 fill "#000000"
11694 targetArrow "standard"
11695 ]
11696 LabelGraphics
11697 [
11698 text "interface reference FunctionalData"
11699 fontSize 14
11700 fontName "Consolas"
11701 configuration "AutoFlippingLabel"
11702 model "six_pos"
11703 position "thead"
11704 ]
11705 ]
11706 edge
11707 [
11708 source 10
11709 target 7
11710 graphics
11711 [
11712 fill "#000000"
11713 targetArrow "standard"
11714 ]
11715 LabelGraphics
11716 [
11717 text "interface reference FunctionalData"
11718 fontSize 14
11719 fontName "Consolas"
11720 configuration "AutoFlippingLabel"
11721 model "six_pos"
11722 position "thead"
11723 ]
11724 ]
11725 edge
11726 [
11727 source 6
11728 target 0
11729 graphics
11730 [
11731 fill "#000000"
11732 targetArrow "standard"
11733 ]
11734 LabelGraphics
11735 [
11736 text "type attribute Function"
11737 fontSize 14
11738 fontName "Consolas"
11739 configuration "AutoFlippingLabel"
11740 model "six_pos"
11741 position "thead"
11742 ]
11743 ]
11744 edge
11745 [
11746 source 11
11747 target 0
11748 graphics
11749 [
11750 fill "#000000"
11751 targetArrow "standard"
11752 ]
11753 LabelGraphics
11754 [
11755 text "type attribute Function"
11756 fontSize 14
11757 fontName "Consolas"
11758 configuration "AutoFlippingLabel"
11759 model "six_pos"
11760 position "thead"
11761 ]
11762 ]
11763]
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 5a2af8ba..c58be27f 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi
index 4ca54850..c5049270 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,11 +1,12 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<fam:FunctionalInterface xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel"> 2<fam:FunctionalArchitectureModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel">
3 <data xsi:type="fam:FunctionalInput" IncomingLinks="//@data.1/@outgoingLinks.0"/> 3 <rootElements xsi:type="fam:Function"/>
4 <data xsi:type="fam:FunctionalOutput"> 4 <rootElements xsi:type="fam:Function">
5 <outgoingLinks to="//@data.0"/> 5 <interface>
6 </data> 6 <data xsi:type="fam:FunctionalOutput"/>
7 <data xsi:type="fam:FunctionalOutput"> 7 <data xsi:type="fam:FunctionalOutput">
8 <terminator/> 8 <terminator/>
9 </data> 9 </data>
10 <data xsi:type="fam:FunctionalOutput"/> 10 </interface>
11</fam:FunctionalInterface> 11 </rootElements>
12</fam:FunctionalArchitectureModel>
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 3a9035a7..9bbf93f7 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
@@ -8535,3 +8535,3341 @@ graph
8535 ] 8535 ]
8536 ] 8536 ]
8537] 8537]
8538graph
8539[
8540 node
8541 [
8542 id 0
8543 graphics
8544 [
8545 w 226.60000000000002
8546 h 40
8547 type "rectangle"
8548 fill "#FFFFFF"
8549 fill2 "#FFFFFF"
8550 outline "#000000"
8551 ]
8552 LabelGraphics
8553 [
8554 text "Root literal FunctionType"
8555 outline "#000000"
8556 fill "#FFFFFF"
8557 fontSize 16
8558 fontName "Monospace"
8559 autoSizePolicy "node_width"
8560 anchor "t"
8561 borderDistance 0.0
8562 ]
8563 LabelGraphics
8564 [
8565 text "
8566 FunctionType enum
8567 "
8568 fontSize 14
8569 fontName "Consolas"
8570 alignment "left"
8571 anchor "tl"
8572 borderDistance 6
8573 ]
8574 ]
8575
8576 node
8577 [
8578 id 1
8579 graphics
8580 [
8581 w 297.0
8582 h 40
8583 type "rectangle"
8584 fill "#FFFFFF"
8585 fill2 "#FFFFFF"
8586 outline "#000000"
8587 ]
8588 LabelGraphics
8589 [
8590 text "Intermediate literal FunctionType"
8591 outline "#000000"
8592 fill "#FFFFFF"
8593 fontSize 16
8594 fontName "Monospace"
8595 autoSizePolicy "node_width"
8596 anchor "t"
8597 borderDistance 0.0
8598 ]
8599 LabelGraphics
8600 [
8601 text "
8602 FunctionType enum
8603 "
8604 fontSize 14
8605 fontName "Consolas"
8606 alignment "left"
8607 anchor "tl"
8608 borderDistance 6
8609 ]
8610 ]
8611
8612 node
8613 [
8614 id 2
8615 graphics
8616 [
8617 w 226.60000000000002
8618 h 40
8619 type "rectangle"
8620 fill "#FFFFFF"
8621 fill2 "#FFFFFF"
8622 outline "#000000"
8623 ]
8624 LabelGraphics
8625 [
8626 text "Leaf literal FunctionType"
8627 outline "#000000"
8628 fill "#FFFFFF"
8629 fontSize 16
8630 fontName "Monospace"
8631 autoSizePolicy "node_width"
8632 anchor "t"
8633 borderDistance 0.0
8634 ]
8635 LabelGraphics
8636 [
8637 text "
8638 FunctionType enum
8639 "
8640 fontSize 14
8641 fontName "Consolas"
8642 alignment "left"
8643 anchor "tl"
8644 borderDistance 6
8645 ]
8646 ]
8647
8648 node
8649 [
8650 id 3
8651 graphics
8652 [
8653 w 41.800000000000004
8654 h 26
8655 type "rectangle"
8656 fill "#FFFFFF"
8657 fill2 "#FFFFFF"
8658 outline "#000000"
8659 ]
8660 LabelGraphics
8661 [
8662 text "true"
8663 outline "#000000"
8664 fill "#FFFFFF"
8665 fontSize 16
8666 fontName "Monospace"
8667 autoSizePolicy "node_width"
8668 anchor "t"
8669 borderDistance 0.0
8670 ]
8671 LabelGraphics
8672 [
8673 text "
8674 "
8675 fontSize 14
8676 fontName "Consolas"
8677 alignment "left"
8678 anchor "tl"
8679 borderDistance 6
8680 ]
8681 ]
8682
8683 node
8684 [
8685 id 4
8686 graphics
8687 [
8688 w 50.6
8689 h 26
8690 type "rectangle"
8691 fill "#FFFFFF"
8692 fill2 "#FFFFFF"
8693 outline "#000000"
8694 ]
8695 LabelGraphics
8696 [
8697 text "false"
8698 outline "#000000"
8699 fill "#FFFFFF"
8700 fontSize 16
8701 fontName "Monospace"
8702 autoSizePolicy "node_width"
8703 anchor "t"
8704 borderDistance 0.0
8705 ]
8706 LabelGraphics
8707 [
8708 text "
8709 "
8710 fontSize 14
8711 fontName "Consolas"
8712 alignment "left"
8713 anchor "tl"
8714 borderDistance 6
8715 ]
8716 ]
8717
8718 node
8719 [
8720 id 5
8721 graphics
8722 [
8723 w 207.9
8724 h 40
8725 type "rectangle"
8726 fill "#FFFFFF"
8727 fill2 "#FFFFFF"
8728 outline "#000000"
8729 ]
8730 LabelGraphics
8731 [
8732 text "null"
8733 outline "#000000"
8734 fill "#FFFFFF"
8735 fontSize 16
8736 fontName "Monospace"
8737 autoSizePolicy "node_width"
8738 anchor "t"
8739 borderDistance 0.0
8740 ]
8741 LabelGraphics
8742 [
8743 text "
8744 FunctionalInterface class
8745 "
8746 fontSize 14
8747 fontName "Consolas"
8748 alignment "left"
8749 anchor "tl"
8750 borderDistance 6
8751 ]
8752 ]
8753
8754 node
8755 [
8756 id 6
8757 graphics
8758 [
8759 w 184.8
8760 h 54
8761 type "rectangle"
8762 fill "#FFFFFF"
8763 fill2 "#FFFFFF"
8764 outline "#000000"
8765 ]
8766 LabelGraphics
8767 [
8768 text "null"
8769 outline "#000000"
8770 fill "#FFFFFF"
8771 fontSize 16
8772 fontName "Monospace"
8773 autoSizePolicy "node_width"
8774 anchor "t"
8775 borderDistance 0.0
8776 ]
8777 LabelGraphics
8778 [
8779 text "
8780 FunctionalOutput class
8781 FunctionalData class
8782 "
8783 fontSize 14
8784 fontName "Consolas"
8785 alignment "left"
8786 anchor "tl"
8787 borderDistance 6
8788 ]
8789 ]
8790
8791 node
8792 [
8793 id 7
8794 graphics
8795 [
8796 w 177.10000000000002
8797 h 54
8798 type "rectangle"
8799 fill "#FFFFFF"
8800 fill2 "#FFFFFF"
8801 outline "#000000"
8802 ]
8803 LabelGraphics
8804 [
8805 text "null"
8806 outline "#000000"
8807 fill "#FFFFFF"
8808 fontSize 16
8809 fontName "Monospace"
8810 autoSizePolicy "node_width"
8811 anchor "t"
8812 borderDistance 0.0
8813 ]
8814 LabelGraphics
8815 [
8816 text "
8817 FunctionalInput class
8818 FunctionalData class
8819 "
8820 fontSize 14
8821 fontName "Consolas"
8822 alignment "left"
8823 anchor "tl"
8824 borderDistance 6
8825 ]
8826 ]
8827
8828 node
8829 [
8830 id 8
8831 graphics
8832 [
8833 w 161.70000000000002
8834 h 40
8835 type "rectangle"
8836 fill "#FFFFFF"
8837 fill2 "#FFFFFF"
8838 outline "#000000"
8839 ]
8840 LabelGraphics
8841 [
8842 text "null"
8843 outline "#000000"
8844 fill "#FFFFFF"
8845 fontSize 16
8846 fontName "Monospace"
8847 autoSizePolicy "node_width"
8848 anchor "t"
8849 borderDistance 0.0
8850 ]
8851 LabelGraphics
8852 [
8853 text "
8854 FAMTerminator class
8855 "
8856 fontSize 14
8857 fontName "Consolas"
8858 alignment "left"
8859 anchor "tl"
8860 borderDistance 6
8861 ]
8862 ]
8863
8864 node
8865 [
8866 id 9
8867 graphics
8868 [
8869 w 184.8
8870 h 54
8871 type "rectangle"
8872 fill "#FFFFFF"
8873 fill2 "#FFFFFF"
8874 outline "#000000"
8875 ]
8876 LabelGraphics
8877 [
8878 text "null"
8879 outline "#000000"
8880 fill "#FFFFFF"
8881 fontSize 16
8882 fontName "Monospace"
8883 autoSizePolicy "node_width"
8884 anchor "t"
8885 borderDistance 0.0
8886 ]
8887 LabelGraphics
8888 [
8889 text "
8890 FunctionalOutput class
8891 FunctionalData class
8892 "
8893 fontSize 14
8894 fontName "Consolas"
8895 alignment "left"
8896 anchor "tl"
8897 borderDistance 6
8898 ]
8899 ]
8900
8901 node
8902 [
8903 id 10
8904 graphics
8905 [
8906 w 184.8
8907 h 54
8908 type "rectangle"
8909 fill "#FFFFFF"
8910 fill2 "#FFFFFF"
8911 outline "#000000"
8912 ]
8913 LabelGraphics
8914 [
8915 text "null"
8916 outline "#000000"
8917 fill "#FFFFFF"
8918 fontSize 16
8919 fontName "Monospace"
8920 autoSizePolicy "node_width"
8921 anchor "t"
8922 borderDistance 0.0
8923 ]
8924 LabelGraphics
8925 [
8926 text "
8927 FunctionalOutput class
8928 FunctionalData class
8929 "
8930 fontSize 14
8931 fontName "Consolas"
8932 alignment "left"
8933 anchor "tl"
8934 borderDistance 6
8935 ]
8936 ]
8937
8938 node
8939 [
8940 id 11
8941 graphics
8942 [
8943 w 184.8
8944 h 54
8945 type "rectangle"
8946 fill "#FFFFFF"
8947 fill2 "#FFFFFF"
8948 outline "#000000"
8949 ]
8950 LabelGraphics
8951 [
8952 text "null"
8953 outline "#000000"
8954 fill "#FFFFFF"
8955 fontSize 16
8956 fontName "Monospace"
8957 autoSizePolicy "node_width"
8958 anchor "t"
8959 borderDistance 0.0
8960 ]
8961 LabelGraphics
8962 [
8963 text "
8964 FunctionalOutput class
8965 FunctionalData class
8966 "
8967 fontSize 14
8968 fontName "Consolas"
8969 alignment "left"
8970 anchor "tl"
8971 borderDistance 6
8972 ]
8973 ]
8974
8975 node
8976 [
8977 id 12
8978 graphics
8979 [
8980 w 112.2
8981 h 26
8982 type "rectangle"
8983 fill "#FFFFFF"
8984 fill2 "#FFFFFF"
8985 outline "#000000"
8986 ]
8987 LabelGraphics
8988 [
8989 text "New Integers"
8990 outline "#000000"
8991 fill "#FFFFFF"
8992 fontSize 16
8993 fontName "Monospace"
8994 autoSizePolicy "node_width"
8995 anchor "t"
8996 borderDistance 0.0
8997 ]
8998 LabelGraphics
8999 [
9000 text "
9001 "
9002 fontSize 14
9003 fontName "Consolas"
9004 alignment "left"
9005 anchor "tl"
9006 borderDistance 6
9007 ]
9008 ]
9009
9010 node
9011 [
9012 id 13
9013 graphics
9014 [
9015 w 85.80000000000001
9016 h 26
9017 type "rectangle"
9018 fill "#FFFFFF"
9019 fill2 "#FFFFFF"
9020 outline "#000000"
9021 ]
9022 LabelGraphics
9023 [
9024 text "New Reals"
9025 outline "#000000"
9026 fill "#FFFFFF"
9027 fontSize 16
9028 fontName "Monospace"
9029 autoSizePolicy "node_width"
9030 anchor "t"
9031 borderDistance 0.0
9032 ]
9033 LabelGraphics
9034 [
9035 text "
9036 "
9037 fontSize 14
9038 fontName "Consolas"
9039 alignment "left"
9040 anchor "tl"
9041 borderDistance 6
9042 ]
9043 ]
9044
9045 node
9046 [
9047 id 14
9048 graphics
9049 [
9050 w 103.4
9051 h 26
9052 type "rectangle"
9053 fill "#FFFFFF"
9054 fill2 "#FFFFFF"
9055 outline "#000000"
9056 ]
9057 LabelGraphics
9058 [
9059 text "New Strings"
9060 outline "#000000"
9061 fill "#FFFFFF"
9062 fontSize 16
9063 fontName "Monospace"
9064 autoSizePolicy "node_width"
9065 anchor "t"
9066 borderDistance 0.0
9067 ]
9068 LabelGraphics
9069 [
9070 text "
9071 "
9072 fontSize 14
9073 fontName "Consolas"
9074 alignment "left"
9075 anchor "tl"
9076 borderDistance 6
9077 ]
9078 ]
9079
9080 node
9081 [
9082 id 15
9083 graphics
9084 [
9085 w 103.4
9086 h 26
9087 type "rectangle"
9088 fill "#FFFFFF"
9089 fill2 "#FFFFFF"
9090 outline "#000000"
9091 ]
9092 LabelGraphics
9093 [
9094 text "New Objects"
9095 outline "#000000"
9096 fill "#FFFFFF"
9097 fontSize 16
9098 fontName "Monospace"
9099 autoSizePolicy "node_width"
9100 anchor "t"
9101 borderDistance 0.0
9102 ]
9103 LabelGraphics
9104 [
9105 text "
9106 "
9107 fontSize 14
9108 fontName "Consolas"
9109 alignment "left"
9110 anchor "tl"
9111 borderDistance 6
9112 ]
9113 ]
9114 edge
9115 [
9116 source 8
9117 target 6
9118 graphics
9119 [
9120 fill "#000000"
9121 targetArrow "standard"
9122 ]
9123 LabelGraphics
9124 [
9125 text "data reference FAMTerminator"
9126 fontSize 14
9127 fontName "Consolas"
9128 configuration "AutoFlippingLabel"
9129 model "six_pos"
9130 position "thead"
9131 ]
9132 ]
9133 edge
9134 [
9135 source 5
9136 target 6
9137 graphics
9138 [
9139 fill "#000000"
9140 width 3
9141 targetArrow "standard"
9142 ]
9143 LabelGraphics
9144 [
9145 text "data reference FunctionalInterface"
9146 fontSize 14
9147 fontName "Consolas"
9148 configuration "AutoFlippingLabel"
9149 model "six_pos"
9150 position "thead"
9151 ]
9152 ]
9153 edge
9154 [
9155 source 5
9156 target 7
9157 graphics
9158 [
9159 fill "#000000"
9160 width 3
9161 targetArrow "standard"
9162 ]
9163 LabelGraphics
9164 [
9165 text "data reference FunctionalInterface"
9166 fontSize 14
9167 fontName "Consolas"
9168 configuration "AutoFlippingLabel"
9169 model "six_pos"
9170 position "thead"
9171 ]
9172 ]
9173 edge
9174 [
9175 source 5
9176 target 9
9177 graphics
9178 [
9179 fill "#000000"
9180 width 3
9181 targetArrow "standard"
9182 ]
9183 LabelGraphics
9184 [
9185 text "data reference FunctionalInterface"
9186 fontSize 14
9187 fontName "Consolas"
9188 configuration "AutoFlippingLabel"
9189 model "six_pos"
9190 position "thead"
9191 ]
9192 ]
9193 edge
9194 [
9195 source 5
9196 target 10
9197 graphics
9198 [
9199 fill "#000000"
9200 width 3
9201 targetArrow "standard"
9202 ]
9203 LabelGraphics
9204 [
9205 text "data reference FunctionalInterface"
9206 fontSize 14
9207 fontName "Consolas"
9208 configuration "AutoFlippingLabel"
9209 model "six_pos"
9210 position "thead"
9211 ]
9212 ]
9213 edge
9214 [
9215 source 5
9216 target 11
9217 graphics
9218 [
9219 fill "#000000"
9220 width 3
9221 targetArrow "standard"
9222 ]
9223 LabelGraphics
9224 [
9225 text "data reference FunctionalInterface"
9226 fontSize 14
9227 fontName "Consolas"
9228 configuration "AutoFlippingLabel"
9229 model "six_pos"
9230 position "thead"
9231 ]
9232 ]
9233 edge
9234 [
9235 source 6
9236 target 8
9237 graphics
9238 [
9239 fill "#000000"
9240 width 3
9241 targetArrow "standard"
9242 ]
9243 LabelGraphics
9244 [
9245 text "terminator reference FunctionalData"
9246 fontSize 14
9247 fontName "Consolas"
9248 configuration "AutoFlippingLabel"
9249 model "six_pos"
9250 position "thead"
9251 ]
9252 ]
9253 edge
9254 [
9255 source 6
9256 target 5
9257 graphics
9258 [
9259 fill "#000000"
9260 targetArrow "standard"
9261 ]
9262 LabelGraphics
9263 [
9264 text "interface reference FunctionalData"
9265 fontSize 14
9266 fontName "Consolas"
9267 configuration "AutoFlippingLabel"
9268 model "six_pos"
9269 position "thead"
9270 ]
9271 ]
9272 edge
9273 [
9274 source 7
9275 target 5
9276 graphics
9277 [
9278 fill "#000000"
9279 targetArrow "standard"
9280 ]
9281 LabelGraphics
9282 [
9283 text "interface reference FunctionalData"
9284 fontSize 14
9285 fontName "Consolas"
9286 configuration "AutoFlippingLabel"
9287 model "six_pos"
9288 position "thead"
9289 ]
9290 ]
9291 edge
9292 [
9293 source 9
9294 target 5
9295 graphics
9296 [
9297 fill "#000000"
9298 targetArrow "standard"
9299 ]
9300 LabelGraphics
9301 [
9302 text "interface reference FunctionalData"
9303 fontSize 14
9304 fontName "Consolas"
9305 configuration "AutoFlippingLabel"
9306 model "six_pos"
9307 position "thead"
9308 ]
9309 ]
9310 edge
9311 [
9312 source 10
9313 target 5
9314 graphics
9315 [
9316 fill "#000000"
9317 targetArrow "standard"
9318 ]
9319 LabelGraphics
9320 [
9321 text "interface reference FunctionalData"
9322 fontSize 14
9323 fontName "Consolas"
9324 configuration "AutoFlippingLabel"
9325 model "six_pos"
9326 position "thead"
9327 ]
9328 ]
9329 edge
9330 [
9331 source 11
9332 target 5
9333 graphics
9334 [
9335 fill "#000000"
9336 targetArrow "standard"
9337 ]
9338 LabelGraphics
9339 [
9340 text "interface reference FunctionalData"
9341 fontSize 14
9342 fontName "Consolas"
9343 configuration "AutoFlippingLabel"
9344 model "six_pos"
9345 position "thead"
9346 ]
9347 ]
9348]
9349graph
9350[
9351 node
9352 [
9353 id 0
9354 graphics
9355 [
9356 w 226.60000000000002
9357 h 40
9358 type "rectangle"
9359 fill "#FFFFFF"
9360 fill2 "#FFFFFF"
9361 outline "#000000"
9362 ]
9363 LabelGraphics
9364 [
9365 text "Root literal FunctionType"
9366 outline "#000000"
9367 fill "#FFFFFF"
9368 fontSize 16
9369 fontName "Monospace"
9370 autoSizePolicy "node_width"
9371 anchor "t"
9372 borderDistance 0.0
9373 ]
9374 LabelGraphics
9375 [
9376 text "
9377 FunctionType enum
9378 "
9379 fontSize 14
9380 fontName "Consolas"
9381 alignment "left"
9382 anchor "tl"
9383 borderDistance 6
9384 ]
9385 ]
9386
9387 node
9388 [
9389 id 1
9390 graphics
9391 [
9392 w 297.0
9393 h 40
9394 type "rectangle"
9395 fill "#FFFFFF"
9396 fill2 "#FFFFFF"
9397 outline "#000000"
9398 ]
9399 LabelGraphics
9400 [
9401 text "Intermediate literal FunctionType"
9402 outline "#000000"
9403 fill "#FFFFFF"
9404 fontSize 16
9405 fontName "Monospace"
9406 autoSizePolicy "node_width"
9407 anchor "t"
9408 borderDistance 0.0
9409 ]
9410 LabelGraphics
9411 [
9412 text "
9413 FunctionType enum
9414 "
9415 fontSize 14
9416 fontName "Consolas"
9417 alignment "left"
9418 anchor "tl"
9419 borderDistance 6
9420 ]
9421 ]
9422
9423 node
9424 [
9425 id 2
9426 graphics
9427 [
9428 w 226.60000000000002
9429 h 40
9430 type "rectangle"
9431 fill "#FFFFFF"
9432 fill2 "#FFFFFF"
9433 outline "#000000"
9434 ]
9435 LabelGraphics
9436 [
9437 text "Leaf literal FunctionType"
9438 outline "#000000"
9439 fill "#FFFFFF"
9440 fontSize 16
9441 fontName "Monospace"
9442 autoSizePolicy "node_width"
9443 anchor "t"
9444 borderDistance 0.0
9445 ]
9446 LabelGraphics
9447 [
9448 text "
9449 FunctionType enum
9450 "
9451 fontSize 14
9452 fontName "Consolas"
9453 alignment "left"
9454 anchor "tl"
9455 borderDistance 6
9456 ]
9457 ]
9458
9459 node
9460 [
9461 id 3
9462 graphics
9463 [
9464 w 41.800000000000004
9465 h 26
9466 type "rectangle"
9467 fill "#FFFFFF"
9468 fill2 "#FFFFFF"
9469 outline "#000000"
9470 ]
9471 LabelGraphics
9472 [
9473 text "true"
9474 outline "#000000"
9475 fill "#FFFFFF"
9476 fontSize 16
9477 fontName "Monospace"
9478 autoSizePolicy "node_width"
9479 anchor "t"
9480 borderDistance 0.0
9481 ]
9482 LabelGraphics
9483 [
9484 text "
9485 "
9486 fontSize 14
9487 fontName "Consolas"
9488 alignment "left"
9489 anchor "tl"
9490 borderDistance 6
9491 ]
9492 ]
9493
9494 node
9495 [
9496 id 4
9497 graphics
9498 [
9499 w 50.6
9500 h 26
9501 type "rectangle"
9502 fill "#FFFFFF"
9503 fill2 "#FFFFFF"
9504 outline "#000000"
9505 ]
9506 LabelGraphics
9507 [
9508 text "false"
9509 outline "#000000"
9510 fill "#FFFFFF"
9511 fontSize 16
9512 fontName "Monospace"
9513 autoSizePolicy "node_width"
9514 anchor "t"
9515 borderDistance 0.0
9516 ]
9517 LabelGraphics
9518 [
9519 text "
9520 "
9521 fontSize 14
9522 fontName "Consolas"
9523 alignment "left"
9524 anchor "tl"
9525 borderDistance 6
9526 ]
9527 ]
9528
9529 node
9530 [
9531 id 5
9532 graphics
9533 [
9534 w 207.9
9535 h 40
9536 type "rectangle"
9537 fill "#FFFFFF"
9538 fill2 "#FFFFFF"
9539 outline "#000000"
9540 ]
9541 LabelGraphics
9542 [
9543 text "null"
9544 outline "#000000"
9545 fill "#FFFFFF"
9546 fontSize 16
9547 fontName "Monospace"
9548 autoSizePolicy "node_width"
9549 anchor "t"
9550 borderDistance 0.0
9551 ]
9552 LabelGraphics
9553 [
9554 text "
9555 FunctionalInterface class
9556 "
9557 fontSize 14
9558 fontName "Consolas"
9559 alignment "left"
9560 anchor "tl"
9561 borderDistance 6
9562 ]
9563 ]
9564
9565 node
9566 [
9567 id 6
9568 graphics
9569 [
9570 w 177.10000000000002
9571 h 54
9572 type "rectangle"
9573 fill "#FFFFFF"
9574 fill2 "#FFFFFF"
9575 outline "#000000"
9576 ]
9577 LabelGraphics
9578 [
9579 text "null"
9580 outline "#000000"
9581 fill "#FFFFFF"
9582 fontSize 16
9583 fontName "Monospace"
9584 autoSizePolicy "node_width"
9585 anchor "t"
9586 borderDistance 0.0
9587 ]
9588 LabelGraphics
9589 [
9590 text "
9591 FunctionalInput class
9592 FunctionalData class
9593 "
9594 fontSize 14
9595 fontName "Consolas"
9596 alignment "left"
9597 anchor "tl"
9598 borderDistance 6
9599 ]
9600 ]
9601
9602 node
9603 [
9604 id 7
9605 graphics
9606 [
9607 w 177.10000000000002
9608 h 54
9609 type "rectangle"
9610 fill "#FFFFFF"
9611 fill2 "#FFFFFF"
9612 outline "#000000"
9613 ]
9614 LabelGraphics
9615 [
9616 text "null"
9617 outline "#000000"
9618 fill "#FFFFFF"
9619 fontSize 16
9620 fontName "Monospace"
9621 autoSizePolicy "node_width"
9622 anchor "t"
9623 borderDistance 0.0
9624 ]
9625 LabelGraphics
9626 [
9627 text "
9628 FunctionalInput class
9629 FunctionalData class
9630 "
9631 fontSize 14
9632 fontName "Consolas"
9633 alignment "left"
9634 anchor "tl"
9635 borderDistance 6
9636 ]
9637 ]
9638
9639 node
9640 [
9641 id 8
9642 graphics
9643 [
9644 w 177.10000000000002
9645 h 54
9646 type "rectangle"
9647 fill "#FFFFFF"
9648 fill2 "#FFFFFF"
9649 outline "#000000"
9650 ]
9651 LabelGraphics
9652 [
9653 text "null"
9654 outline "#000000"
9655 fill "#FFFFFF"
9656 fontSize 16
9657 fontName "Monospace"
9658 autoSizePolicy "node_width"
9659 anchor "t"
9660 borderDistance 0.0
9661 ]
9662 LabelGraphics
9663 [
9664 text "
9665 FunctionalInput class
9666 FunctionalData class
9667 "
9668 fontSize 14
9669 fontName "Consolas"
9670 alignment "left"
9671 anchor "tl"
9672 borderDistance 6
9673 ]
9674 ]
9675
9676 node
9677 [
9678 id 9
9679 graphics
9680 [
9681 w 161.70000000000002
9682 h 40
9683 type "rectangle"
9684 fill "#FFFFFF"
9685 fill2 "#FFFFFF"
9686 outline "#000000"
9687 ]
9688 LabelGraphics
9689 [
9690 text "null"
9691 outline "#000000"
9692 fill "#FFFFFF"
9693 fontSize 16
9694 fontName "Monospace"
9695 autoSizePolicy "node_width"
9696 anchor "t"
9697 borderDistance 0.0
9698 ]
9699 LabelGraphics
9700 [
9701 text "
9702 FAMTerminator class
9703 "
9704 fontSize 14
9705 fontName "Consolas"
9706 alignment "left"
9707 anchor "tl"
9708 borderDistance 6
9709 ]
9710 ]
9711
9712 node
9713 [
9714 id 10
9715 graphics
9716 [
9717 w 177.10000000000002
9718 h 54
9719 type "rectangle"
9720 fill "#FFFFFF"
9721 fill2 "#FFFFFF"
9722 outline "#000000"
9723 ]
9724 LabelGraphics
9725 [
9726 text "null"
9727 outline "#000000"
9728 fill "#FFFFFF"
9729 fontSize 16
9730 fontName "Monospace"
9731 autoSizePolicy "node_width"
9732 anchor "t"
9733 borderDistance 0.0
9734 ]
9735 LabelGraphics
9736 [
9737 text "
9738 FunctionalInput class
9739 FunctionalData class
9740 "
9741 fontSize 14
9742 fontName "Consolas"
9743 alignment "left"
9744 anchor "tl"
9745 borderDistance 6
9746 ]
9747 ]
9748
9749 node
9750 [
9751 id 11
9752 graphics
9753 [
9754 w 184.8
9755 h 54
9756 type "rectangle"
9757 fill "#FFFFFF"
9758 fill2 "#FFFFFF"
9759 outline "#000000"
9760 ]
9761 LabelGraphics
9762 [
9763 text "null"
9764 outline "#000000"
9765 fill "#FFFFFF"
9766 fontSize 16
9767 fontName "Monospace"
9768 autoSizePolicy "node_width"
9769 anchor "t"
9770 borderDistance 0.0
9771 ]
9772 LabelGraphics
9773 [
9774 text "
9775 FunctionalOutput class
9776 FunctionalData class
9777 "
9778 fontSize 14
9779 fontName "Consolas"
9780 alignment "left"
9781 anchor "tl"
9782 borderDistance 6
9783 ]
9784 ]
9785
9786 node
9787 [
9788 id 12
9789 graphics
9790 [
9791 w 112.2
9792 h 26
9793 type "rectangle"
9794 fill "#FFFFFF"
9795 fill2 "#FFFFFF"
9796 outline "#000000"
9797 ]
9798 LabelGraphics
9799 [
9800 text "New Integers"
9801 outline "#000000"
9802 fill "#FFFFFF"
9803 fontSize 16
9804 fontName "Monospace"
9805 autoSizePolicy "node_width"
9806 anchor "t"
9807 borderDistance 0.0
9808 ]
9809 LabelGraphics
9810 [
9811 text "
9812 "
9813 fontSize 14
9814 fontName "Consolas"
9815 alignment "left"
9816 anchor "tl"
9817 borderDistance 6
9818 ]
9819 ]
9820
9821 node
9822 [
9823 id 13
9824 graphics
9825 [
9826 w 85.80000000000001
9827 h 26
9828 type "rectangle"
9829 fill "#FFFFFF"
9830 fill2 "#FFFFFF"
9831 outline "#000000"
9832 ]
9833 LabelGraphics
9834 [
9835 text "New Reals"
9836 outline "#000000"
9837 fill "#FFFFFF"
9838 fontSize 16
9839 fontName "Monospace"
9840 autoSizePolicy "node_width"
9841 anchor "t"
9842 borderDistance 0.0
9843 ]
9844 LabelGraphics
9845 [
9846 text "
9847 "
9848 fontSize 14
9849 fontName "Consolas"
9850 alignment "left"
9851 anchor "tl"
9852 borderDistance 6
9853 ]
9854 ]
9855
9856 node
9857 [
9858 id 14
9859 graphics
9860 [
9861 w 103.4
9862 h 26
9863 type "rectangle"
9864 fill "#FFFFFF"
9865 fill2 "#FFFFFF"
9866 outline "#000000"
9867 ]
9868 LabelGraphics
9869 [
9870 text "New Strings"
9871 outline "#000000"
9872 fill "#FFFFFF"
9873 fontSize 16
9874 fontName "Monospace"
9875 autoSizePolicy "node_width"
9876 anchor "t"
9877 borderDistance 0.0
9878 ]
9879 LabelGraphics
9880 [
9881 text "
9882 "
9883 fontSize 14
9884 fontName "Consolas"
9885 alignment "left"
9886 anchor "tl"
9887 borderDistance 6
9888 ]
9889 ]
9890
9891 node
9892 [
9893 id 15
9894 graphics
9895 [
9896 w 103.4
9897 h 26
9898 type "rectangle"
9899 fill "#FFFFFF"
9900 fill2 "#FFFFFF"
9901 outline "#000000"
9902 ]
9903 LabelGraphics
9904 [
9905 text "New Objects"
9906 outline "#000000"
9907 fill "#FFFFFF"
9908 fontSize 16
9909 fontName "Monospace"
9910 autoSizePolicy "node_width"
9911 anchor "t"
9912 borderDistance 0.0
9913 ]
9914 LabelGraphics
9915 [
9916 text "
9917 "
9918 fontSize 14
9919 fontName "Consolas"
9920 alignment "left"
9921 anchor "tl"
9922 borderDistance 6
9923 ]
9924 ]
9925 edge
9926 [
9927 source 9
9928 target 8
9929 graphics
9930 [
9931 fill "#000000"
9932 targetArrow "standard"
9933 ]
9934 LabelGraphics
9935 [
9936 text "data reference FAMTerminator"
9937 fontSize 14
9938 fontName "Consolas"
9939 configuration "AutoFlippingLabel"
9940 model "six_pos"
9941 position "thead"
9942 ]
9943 ]
9944 edge
9945 [
9946 source 5
9947 target 6
9948 graphics
9949 [
9950 fill "#000000"
9951 width 3
9952 targetArrow "standard"
9953 ]
9954 LabelGraphics
9955 [
9956 text "data reference FunctionalInterface"
9957 fontSize 14
9958 fontName "Consolas"
9959 configuration "AutoFlippingLabel"
9960 model "six_pos"
9961 position "thead"
9962 ]
9963 ]
9964 edge
9965 [
9966 source 5
9967 target 7
9968 graphics
9969 [
9970 fill "#000000"
9971 width 3
9972 targetArrow "standard"
9973 ]
9974 LabelGraphics
9975 [
9976 text "data reference FunctionalInterface"
9977 fontSize 14
9978 fontName "Consolas"
9979 configuration "AutoFlippingLabel"
9980 model "six_pos"
9981 position "thead"
9982 ]
9983 ]
9984 edge
9985 [
9986 source 5
9987 target 8
9988 graphics
9989 [
9990 fill "#000000"
9991 width 3
9992 targetArrow "standard"
9993 ]
9994 LabelGraphics
9995 [
9996 text "data reference FunctionalInterface"
9997 fontSize 14
9998 fontName "Consolas"
9999 configuration "AutoFlippingLabel"
10000 model "six_pos"
10001 position "thead"
10002 ]
10003 ]
10004 edge
10005 [
10006 source 5
10007 target 10
10008 graphics
10009 [
10010 fill "#000000"
10011 width 3
10012 targetArrow "standard"
10013 ]
10014 LabelGraphics
10015 [
10016 text "data reference FunctionalInterface"
10017 fontSize 14
10018 fontName "Consolas"
10019 configuration "AutoFlippingLabel"
10020 model "six_pos"
10021 position "thead"
10022 ]
10023 ]
10024 edge
10025 [
10026 source 5
10027 target 11
10028 graphics
10029 [
10030 fill "#000000"
10031 width 3
10032 targetArrow "standard"
10033 ]
10034 LabelGraphics
10035 [
10036 text "data reference FunctionalInterface"
10037 fontSize 14
10038 fontName "Consolas"
10039 configuration "AutoFlippingLabel"
10040 model "six_pos"
10041 position "thead"
10042 ]
10043 ]
10044 edge
10045 [
10046 source 8
10047 target 9
10048 graphics
10049 [
10050 fill "#000000"
10051 width 3
10052 targetArrow "standard"
10053 ]
10054 LabelGraphics
10055 [
10056 text "terminator reference FunctionalData"
10057 fontSize 14
10058 fontName "Consolas"
10059 configuration "AutoFlippingLabel"
10060 model "six_pos"
10061 position "thead"
10062 ]
10063 ]
10064 edge
10065 [
10066 source 6
10067 target 5
10068 graphics
10069 [
10070 fill "#000000"
10071 targetArrow "standard"
10072 ]
10073 LabelGraphics
10074 [
10075 text "interface reference FunctionalData"
10076 fontSize 14
10077 fontName "Consolas"
10078 configuration "AutoFlippingLabel"
10079 model "six_pos"
10080 position "thead"
10081 ]
10082 ]
10083 edge
10084 [
10085 source 7
10086 target 5
10087 graphics
10088 [
10089 fill "#000000"
10090 targetArrow "standard"
10091 ]
10092 LabelGraphics
10093 [
10094 text "interface reference FunctionalData"
10095 fontSize 14
10096 fontName "Consolas"
10097 configuration "AutoFlippingLabel"
10098 model "six_pos"
10099 position "thead"
10100 ]
10101 ]
10102 edge
10103 [
10104 source 8
10105 target 5
10106 graphics
10107 [
10108 fill "#000000"
10109 targetArrow "standard"
10110 ]
10111 LabelGraphics
10112 [
10113 text "interface reference FunctionalData"
10114 fontSize 14
10115 fontName "Consolas"
10116 configuration "AutoFlippingLabel"
10117 model "six_pos"
10118 position "thead"
10119 ]
10120 ]
10121 edge
10122 [
10123 source 10
10124 target 5
10125 graphics
10126 [
10127 fill "#000000"
10128 targetArrow "standard"
10129 ]
10130 LabelGraphics
10131 [
10132 text "interface reference FunctionalData"
10133 fontSize 14
10134 fontName "Consolas"
10135 configuration "AutoFlippingLabel"
10136 model "six_pos"
10137 position "thead"
10138 ]
10139 ]
10140 edge
10141 [
10142 source 11
10143 target 5
10144 graphics
10145 [
10146 fill "#000000"
10147 targetArrow "standard"
10148 ]
10149 LabelGraphics
10150 [
10151 text "interface reference FunctionalData"
10152 fontSize 14
10153 fontName "Consolas"
10154 configuration "AutoFlippingLabel"
10155 model "six_pos"
10156 position "thead"
10157 ]
10158 ]
10159]
10160graph
10161[
10162 node
10163 [
10164 id 0
10165 graphics
10166 [
10167 w 226.60000000000002
10168 h 40
10169 type "rectangle"
10170 fill "#FFFFFF"
10171 fill2 "#FFFFFF"
10172 outline "#000000"
10173 ]
10174 LabelGraphics
10175 [
10176 text "Root literal FunctionType"
10177 outline "#000000"
10178 fill "#FFFFFF"
10179 fontSize 16
10180 fontName "Monospace"
10181 autoSizePolicy "node_width"
10182 anchor "t"
10183 borderDistance 0.0
10184 ]
10185 LabelGraphics
10186 [
10187 text "
10188 FunctionType enum
10189 "
10190 fontSize 14
10191 fontName "Consolas"
10192 alignment "left"
10193 anchor "tl"
10194 borderDistance 6
10195 ]
10196 ]
10197
10198 node
10199 [
10200 id 1
10201 graphics
10202 [
10203 w 297.0
10204 h 40
10205 type "rectangle"
10206 fill "#FFFFFF"
10207 fill2 "#FFFFFF"
10208 outline "#000000"
10209 ]
10210 LabelGraphics
10211 [
10212 text "Intermediate literal FunctionType"
10213 outline "#000000"
10214 fill "#FFFFFF"
10215 fontSize 16
10216 fontName "Monospace"
10217 autoSizePolicy "node_width"
10218 anchor "t"
10219 borderDistance 0.0
10220 ]
10221 LabelGraphics
10222 [
10223 text "
10224 FunctionType enum
10225 "
10226 fontSize 14
10227 fontName "Consolas"
10228 alignment "left"
10229 anchor "tl"
10230 borderDistance 6
10231 ]
10232 ]
10233
10234 node
10235 [
10236 id 2
10237 graphics
10238 [
10239 w 226.60000000000002
10240 h 40
10241 type "rectangle"
10242 fill "#FFFFFF"
10243 fill2 "#FFFFFF"
10244 outline "#000000"
10245 ]
10246 LabelGraphics
10247 [
10248 text "Leaf literal FunctionType"
10249 outline "#000000"
10250 fill "#FFFFFF"
10251 fontSize 16
10252 fontName "Monospace"
10253 autoSizePolicy "node_width"
10254 anchor "t"
10255 borderDistance 0.0
10256 ]
10257 LabelGraphics
10258 [
10259 text "
10260 FunctionType enum
10261 "
10262 fontSize 14
10263 fontName "Consolas"
10264 alignment "left"
10265 anchor "tl"
10266 borderDistance 6
10267 ]
10268 ]
10269
10270 node
10271 [
10272 id 3
10273 graphics
10274 [
10275 w 361.90000000000003
10276 h 54
10277 type "rectangle"
10278 fill "#FFFFFF"
10279 fill2 "#FFFFFF"
10280 outline "#000000"
10281 ]
10282 LabelGraphics
10283 [
10284 text "o 1"
10285 outline "#000000"
10286 fill "#FFFFFF"
10287 fontSize 16
10288 fontName "Monospace"
10289 autoSizePolicy "node_width"
10290 anchor "t"
10291 borderDistance 0.0
10292 ]
10293 LabelGraphics
10294 [
10295 text "
10296 FunctionalArchitectureModel class DefinedPart
10297 FunctionalArchitectureModel class
10298 "
10299 fontSize 14
10300 fontName "Consolas"
10301 alignment "left"
10302 anchor "tl"
10303 borderDistance 6
10304 ]
10305 ]
10306
10307 node
10308 [
10309 id 4
10310 graphics
10311 [
10312 w 41.800000000000004
10313 h 26
10314 type "rectangle"
10315 fill "#FFFFFF"
10316 fill2 "#FFFFFF"
10317 outline "#000000"
10318 ]
10319 LabelGraphics
10320 [
10321 text "true"
10322 outline "#000000"
10323 fill "#FFFFFF"
10324 fontSize 16
10325 fontName "Monospace"
10326 autoSizePolicy "node_width"
10327 anchor "t"
10328 borderDistance 0.0
10329 ]
10330 LabelGraphics
10331 [
10332 text "
10333 "
10334 fontSize 14
10335 fontName "Consolas"
10336 alignment "left"
10337 anchor "tl"
10338 borderDistance 6
10339 ]
10340 ]
10341
10342 node
10343 [
10344 id 5
10345 graphics
10346 [
10347 w 50.6
10348 h 26
10349 type "rectangle"
10350 fill "#FFFFFF"
10351 fill2 "#FFFFFF"
10352 outline "#000000"
10353 ]
10354 LabelGraphics
10355 [
10356 text "false"
10357 outline "#000000"
10358 fill "#FFFFFF"
10359 fontSize 16
10360 fontName "Monospace"
10361 autoSizePolicy "node_width"
10362 anchor "t"
10363 borderDistance 0.0
10364 ]
10365 LabelGraphics
10366 [
10367 text "
10368 "
10369 fontSize 14
10370 fontName "Consolas"
10371 alignment "left"
10372 anchor "tl"
10373 borderDistance 6
10374 ]
10375 ]
10376
10377 node
10378 [
10379 id 6
10380 graphics
10381 [
10382 w 192.50000000000003
10383 h 54
10384 type "rectangle"
10385 fill "#FFFFFF"
10386 fill2 "#FFFFFF"
10387 outline "#000000"
10388 ]
10389 LabelGraphics
10390 [
10391 text "null"
10392 outline "#000000"
10393 fill "#FFFFFF"
10394 fontSize 16
10395 fontName "Monospace"
10396 autoSizePolicy "node_width"
10397 anchor "t"
10398 borderDistance 0.0
10399 ]
10400 LabelGraphics
10401 [
10402 text "
10403 FunctionalElement class
10404 Function class
10405 "
10406 fontSize 14
10407 fontName "Consolas"
10408 alignment "left"
10409 anchor "tl"
10410 borderDistance 6
10411 ]
10412 ]
10413
10414 node
10415 [
10416 id 7
10417 graphics
10418 [
10419 w 207.9
10420 h 40
10421 type "rectangle"
10422 fill "#FFFFFF"
10423 fill2 "#FFFFFF"
10424 outline "#000000"
10425 ]
10426 LabelGraphics
10427 [
10428 text "null"
10429 outline "#000000"
10430 fill "#FFFFFF"
10431 fontSize 16
10432 fontName "Monospace"
10433 autoSizePolicy "node_width"
10434 anchor "t"
10435 borderDistance 0.0
10436 ]
10437 LabelGraphics
10438 [
10439 text "
10440 FunctionalInterface class
10441 "
10442 fontSize 14
10443 fontName "Consolas"
10444 alignment "left"
10445 anchor "tl"
10446 borderDistance 6
10447 ]
10448 ]
10449
10450 node
10451 [
10452 id 8
10453 graphics
10454 [
10455 w 184.8
10456 h 54
10457 type "rectangle"
10458 fill "#FFFFFF"
10459 fill2 "#FFFFFF"
10460 outline "#000000"
10461 ]
10462 LabelGraphics
10463 [
10464 text "null"
10465 outline "#000000"
10466 fill "#FFFFFF"
10467 fontSize 16
10468 fontName "Monospace"
10469 autoSizePolicy "node_width"
10470 anchor "t"
10471 borderDistance 0.0
10472 ]
10473 LabelGraphics
10474 [
10475 text "
10476 FunctionalOutput class
10477 FunctionalData class
10478 "
10479 fontSize 14
10480 fontName "Consolas"
10481 alignment "left"
10482 anchor "tl"
10483 borderDistance 6
10484 ]
10485 ]
10486
10487 node
10488 [
10489 id 9
10490 graphics
10491 [
10492 w 177.10000000000002
10493 h 40
10494 type "rectangle"
10495 fill "#FFFFFF"
10496 fill2 "#FFFFFF"
10497 outline "#000000"
10498 ]
10499 LabelGraphics
10500 [
10501 text "null"
10502 outline "#000000"
10503 fill "#FFFFFF"
10504 fontSize 16
10505 fontName "Monospace"
10506 autoSizePolicy "node_width"
10507 anchor "t"
10508 borderDistance 0.0
10509 ]
10510 LabelGraphics
10511 [
10512 text "
10513 InformationLink class
10514 "
10515 fontSize 14
10516 fontName "Consolas"
10517 alignment "left"
10518 anchor "tl"
10519 borderDistance 6
10520 ]
10521 ]
10522
10523 node
10524 [
10525 id 10
10526 graphics
10527 [
10528 w 177.10000000000002
10529 h 54
10530 type "rectangle"
10531 fill "#FFFFFF"
10532 fill2 "#FFFFFF"
10533 outline "#000000"
10534 ]
10535 LabelGraphics
10536 [
10537 text "null"
10538 outline "#000000"
10539 fill "#FFFFFF"
10540 fontSize 16
10541 fontName "Monospace"
10542 autoSizePolicy "node_width"
10543 anchor "t"
10544 borderDistance 0.0
10545 ]
10546 LabelGraphics
10547 [
10548 text "
10549 FunctionalInput class
10550 FunctionalData class
10551 "
10552 fontSize 14
10553 fontName "Consolas"
10554 alignment "left"
10555 anchor "tl"
10556 borderDistance 6
10557 ]
10558 ]
10559
10560 node
10561 [
10562 id 11
10563 graphics
10564 [
10565 w 161.70000000000002
10566 h 40
10567 type "rectangle"
10568 fill "#FFFFFF"
10569 fill2 "#FFFFFF"
10570 outline "#000000"
10571 ]
10572 LabelGraphics
10573 [
10574 text "null"
10575 outline "#000000"
10576 fill "#FFFFFF"
10577 fontSize 16
10578 fontName "Monospace"
10579 autoSizePolicy "node_width"
10580 anchor "t"
10581 borderDistance 0.0
10582 ]
10583 LabelGraphics
10584 [
10585 text "
10586 FAMTerminator class
10587 "
10588 fontSize 14
10589 fontName "Consolas"
10590 alignment "left"
10591 anchor "tl"
10592 borderDistance 6
10593 ]
10594 ]
10595
10596 node
10597 [
10598 id 12
10599 graphics
10600 [
10601 w 112.2
10602 h 26
10603 type "rectangle"
10604 fill "#FFFFFF"
10605 fill2 "#FFFFFF"
10606 outline "#000000"
10607 ]
10608 LabelGraphics
10609 [
10610 text "New Integers"
10611 outline "#000000"
10612 fill "#FFFFFF"
10613 fontSize 16
10614 fontName "Monospace"
10615 autoSizePolicy "node_width"
10616 anchor "t"
10617 borderDistance 0.0
10618 ]
10619 LabelGraphics
10620 [
10621 text "
10622 "
10623 fontSize 14
10624 fontName "Consolas"
10625 alignment "left"
10626 anchor "tl"
10627 borderDistance 6
10628 ]
10629 ]
10630
10631 node
10632 [
10633 id 13
10634 graphics
10635 [
10636 w 85.80000000000001
10637 h 26
10638 type "rectangle"
10639 fill "#FFFFFF"
10640 fill2 "#FFFFFF"
10641 outline "#000000"
10642 ]
10643 LabelGraphics
10644 [
10645 text "New Reals"
10646 outline "#000000"
10647 fill "#FFFFFF"
10648 fontSize 16
10649 fontName "Monospace"
10650 autoSizePolicy "node_width"
10651 anchor "t"
10652 borderDistance 0.0
10653 ]
10654 LabelGraphics
10655 [
10656 text "
10657 "
10658 fontSize 14
10659 fontName "Consolas"
10660 alignment "left"
10661 anchor "tl"
10662 borderDistance 6
10663 ]
10664 ]
10665
10666 node
10667 [
10668 id 14
10669 graphics
10670 [
10671 w 103.4
10672 h 26
10673 type "rectangle"
10674 fill "#FFFFFF"
10675 fill2 "#FFFFFF"
10676 outline "#000000"
10677 ]
10678 LabelGraphics
10679 [
10680 text "New Strings"
10681 outline "#000000"
10682 fill "#FFFFFF"
10683 fontSize 16
10684 fontName "Monospace"
10685 autoSizePolicy "node_width"
10686 anchor "t"
10687 borderDistance 0.0
10688 ]
10689 LabelGraphics
10690 [
10691 text "
10692 "
10693 fontSize 14
10694 fontName "Consolas"
10695 alignment "left"
10696 anchor "tl"
10697 borderDistance 6
10698 ]
10699 ]
10700
10701 node
10702 [
10703 id 15
10704 graphics
10705 [
10706 w 103.4
10707 h 26
10708 type "rectangle"
10709 fill "#FFFFFF"
10710 fill2 "#FFFFFF"
10711 outline "#000000"
10712 ]
10713 LabelGraphics
10714 [
10715 text "New Objects"
10716 outline "#000000"
10717 fill "#FFFFFF"
10718 fontSize 16
10719 fontName "Monospace"
10720 autoSizePolicy "node_width"
10721 anchor "t"
10722 borderDistance 0.0
10723 ]
10724 LabelGraphics
10725 [
10726 text "
10727 "
10728 fontSize 14
10729 fontName "Consolas"
10730 alignment "left"
10731 anchor "tl"
10732 borderDistance 6
10733 ]
10734 ]
10735 edge
10736 [
10737 source 6
10738 target 7
10739 graphics
10740 [
10741 fill "#000000"
10742 width 3
10743 targetArrow "standard"
10744 ]
10745 LabelGraphics
10746 [
10747 text "interface reference FunctionalElement"
10748 fontSize 14
10749 fontName "Consolas"
10750 configuration "AutoFlippingLabel"
10751 model "six_pos"
10752 position "thead"
10753 ]
10754 ]
10755 edge
10756 [
10757 source 6
10758 target 3
10759 graphics
10760 [
10761 fill "#000000"
10762 targetArrow "standard"
10763 ]
10764 LabelGraphics
10765 [
10766 text "model reference FunctionalElement"
10767 fontSize 14
10768 fontName "Consolas"
10769 configuration "AutoFlippingLabel"
10770 model "six_pos"
10771 position "thead"
10772 ]
10773 ]
10774 edge
10775 [
10776 source 3
10777 target 6
10778 graphics
10779 [
10780 fill "#000000"
10781 width 3
10782 targetArrow "standard"
10783 ]
10784 LabelGraphics
10785 [
10786 text "rootElements reference FunctionalArchitectureModel"
10787 fontSize 14
10788 fontName "Consolas"
10789 configuration "AutoFlippingLabel"
10790 model "six_pos"
10791 position "thead"
10792 ]
10793 ]
10794 edge
10795 [
10796 source 11
10797 target 8
10798 graphics
10799 [
10800 fill "#000000"
10801 targetArrow "standard"
10802 ]
10803 LabelGraphics
10804 [
10805 text "data reference FAMTerminator"
10806 fontSize 14
10807 fontName "Consolas"
10808 configuration "AutoFlippingLabel"
10809 model "six_pos"
10810 position "thead"
10811 ]
10812 ]
10813 edge
10814 [
10815 source 9
10816 target 8
10817 graphics
10818 [
10819 fill "#000000"
10820 targetArrow "standard"
10821 ]
10822 LabelGraphics
10823 [
10824 text "from reference InformationLink"
10825 fontSize 14
10826 fontName "Consolas"
10827 configuration "AutoFlippingLabel"
10828 model "six_pos"
10829 position "thead"
10830 ]
10831 ]
10832 edge
10833 [
10834 source 9
10835 target 10
10836 graphics
10837 [
10838 fill "#000000"
10839 targetArrow "standard"
10840 ]
10841 LabelGraphics
10842 [
10843 text "to reference InformationLink"
10844 fontSize 14
10845 fontName "Consolas"
10846 configuration "AutoFlippingLabel"
10847 model "six_pos"
10848 position "thead"
10849 ]
10850 ]
10851 edge
10852 [
10853 source 7
10854 target 8
10855 graphics
10856 [
10857 fill "#000000"
10858 width 3
10859 targetArrow "standard"
10860 ]
10861 LabelGraphics
10862 [
10863 text "data reference FunctionalInterface"
10864 fontSize 14
10865 fontName "Consolas"
10866 configuration "AutoFlippingLabel"
10867 model "six_pos"
10868 position "thead"
10869 ]
10870 ]
10871 edge
10872 [
10873 source 7
10874 target 10
10875 graphics
10876 [
10877 fill "#000000"
10878 width 3
10879 targetArrow "standard"
10880 ]
10881 LabelGraphics
10882 [
10883 text "data reference FunctionalInterface"
10884 fontSize 14
10885 fontName "Consolas"
10886 configuration "AutoFlippingLabel"
10887 model "six_pos"
10888 position "thead"
10889 ]
10890 ]
10891 edge
10892 [
10893 source 7
10894 target 6
10895 graphics
10896 [
10897 fill "#000000"
10898 targetArrow "standard"
10899 ]
10900 LabelGraphics
10901 [
10902 text "element reference FunctionalInterface"
10903 fontSize 14
10904 fontName "Consolas"
10905 configuration "AutoFlippingLabel"
10906 model "six_pos"
10907 position "thead"
10908 ]
10909 ]
10910 edge
10911 [
10912 source 10
10913 target 9
10914 graphics
10915 [
10916 fill "#000000"
10917 targetArrow "standard"
10918 ]
10919 LabelGraphics
10920 [
10921 text "IncomingLinks reference FunctionalInput"
10922 fontSize 14
10923 fontName "Consolas"
10924 configuration "AutoFlippingLabel"
10925 model "six_pos"
10926 position "thead"
10927 ]
10928 ]
10929 edge
10930 [
10931 source 8
10932 target 9
10933 graphics
10934 [
10935 fill "#000000"
10936 width 3
10937 targetArrow "standard"
10938 ]
10939 LabelGraphics
10940 [
10941 text "outgoingLinks reference FunctionalOutput"
10942 fontSize 14
10943 fontName "Consolas"
10944 configuration "AutoFlippingLabel"
10945 model "six_pos"
10946 position "thead"
10947 ]
10948 ]
10949 edge
10950 [
10951 source 8
10952 target 11
10953 graphics
10954 [
10955 fill "#000000"
10956 width 3
10957 targetArrow "standard"
10958 ]
10959 LabelGraphics
10960 [
10961 text "terminator reference FunctionalData"
10962 fontSize 14
10963 fontName "Consolas"
10964 configuration "AutoFlippingLabel"
10965 model "six_pos"
10966 position "thead"
10967 ]
10968 ]
10969 edge
10970 [
10971 source 8
10972 target 7
10973 graphics
10974 [
10975 fill "#000000"
10976 targetArrow "standard"
10977 ]
10978 LabelGraphics
10979 [
10980 text "interface reference FunctionalData"
10981 fontSize 14
10982 fontName "Consolas"
10983 configuration "AutoFlippingLabel"
10984 model "six_pos"
10985 position "thead"
10986 ]
10987 ]
10988 edge
10989 [
10990 source 10
10991 target 7
10992 graphics
10993 [
10994 fill "#000000"
10995 targetArrow "standard"
10996 ]
10997 LabelGraphics
10998 [
10999 text "interface reference FunctionalData"
11000 fontSize 14
11001 fontName "Consolas"
11002 configuration "AutoFlippingLabel"
11003 model "six_pos"
11004 position "thead"
11005 ]
11006 ]
11007 edge
11008 [
11009 source 6
11010 target 0
11011 graphics
11012 [
11013 fill "#000000"
11014 targetArrow "standard"
11015 ]
11016 LabelGraphics
11017 [
11018 text "type attribute Function"
11019 fontSize 14
11020 fontName "Consolas"
11021 configuration "AutoFlippingLabel"
11022 model "six_pos"
11023 position "thead"
11024 ]
11025 ]
11026]
11027graph
11028[
11029 node
11030 [
11031 id 0
11032 graphics
11033 [
11034 w 226.60000000000002
11035 h 40
11036 type "rectangle"
11037 fill "#FFFFFF"
11038 fill2 "#FFFFFF"
11039 outline "#000000"
11040 ]
11041 LabelGraphics
11042 [
11043 text "Root literal FunctionType"
11044 outline "#000000"
11045 fill "#FFFFFF"
11046 fontSize 16
11047 fontName "Monospace"
11048 autoSizePolicy "node_width"
11049 anchor "t"
11050 borderDistance 0.0
11051 ]
11052 LabelGraphics
11053 [
11054 text "
11055 FunctionType enum
11056 "
11057 fontSize 14
11058 fontName "Consolas"
11059 alignment "left"
11060 anchor "tl"
11061 borderDistance 6
11062 ]
11063 ]
11064
11065 node
11066 [
11067 id 1
11068 graphics
11069 [
11070 w 297.0
11071 h 40
11072 type "rectangle"
11073 fill "#FFFFFF"
11074 fill2 "#FFFFFF"
11075 outline "#000000"
11076 ]
11077 LabelGraphics
11078 [
11079 text "Intermediate literal FunctionType"
11080 outline "#000000"
11081 fill "#FFFFFF"
11082 fontSize 16
11083 fontName "Monospace"
11084 autoSizePolicy "node_width"
11085 anchor "t"
11086 borderDistance 0.0
11087 ]
11088 LabelGraphics
11089 [
11090 text "
11091 FunctionType enum
11092 "
11093 fontSize 14
11094 fontName "Consolas"
11095 alignment "left"
11096 anchor "tl"
11097 borderDistance 6
11098 ]
11099 ]
11100
11101 node
11102 [
11103 id 2
11104 graphics
11105 [
11106 w 226.60000000000002
11107 h 40
11108 type "rectangle"
11109 fill "#FFFFFF"
11110 fill2 "#FFFFFF"
11111 outline "#000000"
11112 ]
11113 LabelGraphics
11114 [
11115 text "Leaf literal FunctionType"
11116 outline "#000000"
11117 fill "#FFFFFF"
11118 fontSize 16
11119 fontName "Monospace"
11120 autoSizePolicy "node_width"
11121 anchor "t"
11122 borderDistance 0.0
11123 ]
11124 LabelGraphics
11125 [
11126 text "
11127 FunctionType enum
11128 "
11129 fontSize 14
11130 fontName "Consolas"
11131 alignment "left"
11132 anchor "tl"
11133 borderDistance 6
11134 ]
11135 ]
11136
11137 node
11138 [
11139 id 3
11140 graphics
11141 [
11142 w 361.90000000000003
11143 h 54
11144 type "rectangle"
11145 fill "#FFFFFF"
11146 fill2 "#FFFFFF"
11147 outline "#000000"
11148 ]
11149 LabelGraphics
11150 [
11151 text "o 1"
11152 outline "#000000"
11153 fill "#FFFFFF"
11154 fontSize 16
11155 fontName "Monospace"
11156 autoSizePolicy "node_width"
11157 anchor "t"
11158 borderDistance 0.0
11159 ]
11160 LabelGraphics
11161 [
11162 text "
11163 FunctionalArchitectureModel class DefinedPart
11164 FunctionalArchitectureModel class
11165 "
11166 fontSize 14
11167 fontName "Consolas"
11168 alignment "left"
11169 anchor "tl"
11170 borderDistance 6
11171 ]
11172 ]
11173
11174 node
11175 [
11176 id 4
11177 graphics
11178 [
11179 w 41.800000000000004
11180 h 26
11181 type "rectangle"
11182 fill "#FFFFFF"
11183 fill2 "#FFFFFF"
11184 outline "#000000"
11185 ]
11186 LabelGraphics
11187 [
11188 text "true"
11189 outline "#000000"
11190 fill "#FFFFFF"
11191 fontSize 16
11192 fontName "Monospace"
11193 autoSizePolicy "node_width"
11194 anchor "t"
11195 borderDistance 0.0
11196 ]
11197 LabelGraphics
11198 [
11199 text "
11200 "
11201 fontSize 14
11202 fontName "Consolas"
11203 alignment "left"
11204 anchor "tl"
11205 borderDistance 6
11206 ]
11207 ]
11208
11209 node
11210 [
11211 id 5
11212 graphics
11213 [
11214 w 50.6
11215 h 26
11216 type "rectangle"
11217 fill "#FFFFFF"
11218 fill2 "#FFFFFF"
11219 outline "#000000"
11220 ]
11221 LabelGraphics
11222 [
11223 text "false"
11224 outline "#000000"
11225 fill "#FFFFFF"
11226 fontSize 16
11227 fontName "Monospace"
11228 autoSizePolicy "node_width"
11229 anchor "t"
11230 borderDistance 0.0
11231 ]
11232 LabelGraphics
11233 [
11234 text "
11235 "
11236 fontSize 14
11237 fontName "Consolas"
11238 alignment "left"
11239 anchor "tl"
11240 borderDistance 6
11241 ]
11242 ]
11243
11244 node
11245 [
11246 id 6
11247 graphics
11248 [
11249 w 192.50000000000003
11250 h 54
11251 type "rectangle"
11252 fill "#FFFFFF"
11253 fill2 "#FFFFFF"
11254 outline "#000000"
11255 ]
11256 LabelGraphics
11257 [
11258 text "null"
11259 outline "#000000"
11260 fill "#FFFFFF"
11261 fontSize 16
11262 fontName "Monospace"
11263 autoSizePolicy "node_width"
11264 anchor "t"
11265 borderDistance 0.0
11266 ]
11267 LabelGraphics
11268 [
11269 text "
11270 FunctionalElement class
11271 Function class
11272 "
11273 fontSize 14
11274 fontName "Consolas"
11275 alignment "left"
11276 anchor "tl"
11277 borderDistance 6
11278 ]
11279 ]
11280
11281 node
11282 [
11283 id 7
11284 graphics
11285 [
11286 w 207.9
11287 h 40
11288 type "rectangle"
11289 fill "#FFFFFF"
11290 fill2 "#FFFFFF"
11291 outline "#000000"
11292 ]
11293 LabelGraphics
11294 [
11295 text "null"
11296 outline "#000000"
11297 fill "#FFFFFF"
11298 fontSize 16
11299 fontName "Monospace"
11300 autoSizePolicy "node_width"
11301 anchor "t"
11302 borderDistance 0.0
11303 ]
11304 LabelGraphics
11305 [
11306 text "
11307 FunctionalInterface class
11308 "
11309 fontSize 14
11310 fontName "Consolas"
11311 alignment "left"
11312 anchor "tl"
11313 borderDistance 6
11314 ]
11315 ]
11316
11317 node
11318 [
11319 id 8
11320 graphics
11321 [
11322 w 184.8
11323 h 54
11324 type "rectangle"
11325 fill "#FFFFFF"
11326 fill2 "#FFFFFF"
11327 outline "#000000"
11328 ]
11329 LabelGraphics
11330 [
11331 text "null"
11332 outline "#000000"
11333 fill "#FFFFFF"
11334 fontSize 16
11335 fontName "Monospace"
11336 autoSizePolicy "node_width"
11337 anchor "t"
11338 borderDistance 0.0
11339 ]
11340 LabelGraphics
11341 [
11342 text "
11343 FunctionalOutput class
11344 FunctionalData class
11345 "
11346 fontSize 14
11347 fontName "Consolas"
11348 alignment "left"
11349 anchor "tl"
11350 borderDistance 6
11351 ]
11352 ]
11353
11354 node
11355 [
11356 id 9
11357 graphics
11358 [
11359 w 161.70000000000002
11360 h 40
11361 type "rectangle"
11362 fill "#FFFFFF"
11363 fill2 "#FFFFFF"
11364 outline "#000000"
11365 ]
11366 LabelGraphics
11367 [
11368 text "null"
11369 outline "#000000"
11370 fill "#FFFFFF"
11371 fontSize 16
11372 fontName "Monospace"
11373 autoSizePolicy "node_width"
11374 anchor "t"
11375 borderDistance 0.0
11376 ]
11377 LabelGraphics
11378 [
11379 text "
11380 FAMTerminator class
11381 "
11382 fontSize 14
11383 fontName "Consolas"
11384 alignment "left"
11385 anchor "tl"
11386 borderDistance 6
11387 ]
11388 ]
11389
11390 node
11391 [
11392 id 10
11393 graphics
11394 [
11395 w 184.8
11396 h 54
11397 type "rectangle"
11398 fill "#FFFFFF"
11399 fill2 "#FFFFFF"
11400 outline "#000000"
11401 ]
11402 LabelGraphics
11403 [
11404 text "null"
11405 outline "#000000"
11406 fill "#FFFFFF"
11407 fontSize 16
11408 fontName "Monospace"
11409 autoSizePolicy "node_width"
11410 anchor "t"
11411 borderDistance 0.0
11412 ]
11413 LabelGraphics
11414 [
11415 text "
11416 FunctionalOutput class
11417 FunctionalData class
11418 "
11419 fontSize 14
11420 fontName "Consolas"
11421 alignment "left"
11422 anchor "tl"
11423 borderDistance 6
11424 ]
11425 ]
11426
11427 node
11428 [
11429 id 11
11430 graphics
11431 [
11432 w 192.50000000000003
11433 h 54
11434 type "rectangle"
11435 fill "#FFFFFF"
11436 fill2 "#FFFFFF"
11437 outline "#000000"
11438 ]
11439 LabelGraphics
11440 [
11441 text "null"
11442 outline "#000000"
11443 fill "#FFFFFF"
11444 fontSize 16
11445 fontName "Monospace"
11446 autoSizePolicy "node_width"
11447 anchor "t"
11448 borderDistance 0.0
11449 ]
11450 LabelGraphics
11451 [
11452 text "
11453 FunctionalElement class
11454 Function class
11455 "
11456 fontSize 14
11457 fontName "Consolas"
11458 alignment "left"
11459 anchor "tl"
11460 borderDistance 6
11461 ]
11462 ]
11463
11464 node
11465 [
11466 id 12
11467 graphics
11468 [
11469 w 112.2
11470 h 26
11471 type "rectangle"
11472 fill "#FFFFFF"
11473 fill2 "#FFFFFF"
11474 outline "#000000"
11475 ]
11476 LabelGraphics
11477 [
11478 text "New Integers"
11479 outline "#000000"
11480 fill "#FFFFFF"
11481 fontSize 16
11482 fontName "Monospace"
11483 autoSizePolicy "node_width"
11484 anchor "t"
11485 borderDistance 0.0
11486 ]
11487 LabelGraphics
11488 [
11489 text "
11490 "
11491 fontSize 14
11492 fontName "Consolas"
11493 alignment "left"
11494 anchor "tl"
11495 borderDistance 6
11496 ]
11497 ]
11498
11499 node
11500 [
11501 id 13
11502 graphics
11503 [
11504 w 85.80000000000001
11505 h 26
11506 type "rectangle"
11507 fill "#FFFFFF"
11508 fill2 "#FFFFFF"
11509 outline "#000000"
11510 ]
11511 LabelGraphics
11512 [
11513 text "New Reals"
11514 outline "#000000"
11515 fill "#FFFFFF"
11516 fontSize 16
11517 fontName "Monospace"
11518 autoSizePolicy "node_width"
11519 anchor "t"
11520 borderDistance 0.0
11521 ]
11522 LabelGraphics
11523 [
11524 text "
11525 "
11526 fontSize 14
11527 fontName "Consolas"
11528 alignment "left"
11529 anchor "tl"
11530 borderDistance 6
11531 ]
11532 ]
11533
11534 node
11535 [
11536 id 14
11537 graphics
11538 [
11539 w 103.4
11540 h 26
11541 type "rectangle"
11542 fill "#FFFFFF"
11543 fill2 "#FFFFFF"
11544 outline "#000000"
11545 ]
11546 LabelGraphics
11547 [
11548 text "New Strings"
11549 outline "#000000"
11550 fill "#FFFFFF"
11551 fontSize 16
11552 fontName "Monospace"
11553 autoSizePolicy "node_width"
11554 anchor "t"
11555 borderDistance 0.0
11556 ]
11557 LabelGraphics
11558 [
11559 text "
11560 "
11561 fontSize 14
11562 fontName "Consolas"
11563 alignment "left"
11564 anchor "tl"
11565 borderDistance 6
11566 ]
11567 ]
11568
11569 node
11570 [
11571 id 15
11572 graphics
11573 [
11574 w 103.4
11575 h 26
11576 type "rectangle"
11577 fill "#FFFFFF"
11578 fill2 "#FFFFFF"
11579 outline "#000000"
11580 ]
11581 LabelGraphics
11582 [
11583 text "New Objects"
11584 outline "#000000"
11585 fill "#FFFFFF"
11586 fontSize 16
11587 fontName "Monospace"
11588 autoSizePolicy "node_width"
11589 anchor "t"
11590 borderDistance 0.0
11591 ]
11592 LabelGraphics
11593 [
11594 text "
11595 "
11596 fontSize 14
11597 fontName "Consolas"
11598 alignment "left"
11599 anchor "tl"
11600 borderDistance 6
11601 ]
11602 ]
11603 edge
11604 [
11605 source 6
11606 target 7
11607 graphics
11608 [
11609 fill "#000000"
11610 width 3
11611 targetArrow "standard"
11612 ]
11613 LabelGraphics
11614 [
11615 text "interface reference FunctionalElement"
11616 fontSize 14
11617 fontName "Consolas"
11618 configuration "AutoFlippingLabel"
11619 model "six_pos"
11620 position "thead"
11621 ]
11622 ]
11623 edge
11624 [
11625 source 6
11626 target 3
11627 graphics
11628 [
11629 fill "#000000"
11630 targetArrow "standard"
11631 ]
11632 LabelGraphics
11633 [
11634 text "model reference FunctionalElement"
11635 fontSize 14
11636 fontName "Consolas"
11637 configuration "AutoFlippingLabel"
11638 model "six_pos"
11639 position "thead"
11640 ]
11641 ]
11642 edge
11643 [
11644 source 11
11645 target 3
11646 graphics
11647 [
11648 fill "#000000"
11649 targetArrow "standard"
11650 ]
11651 LabelGraphics
11652 [
11653 text "model reference FunctionalElement"
11654 fontSize 14
11655 fontName "Consolas"
11656 configuration "AutoFlippingLabel"
11657 model "six_pos"
11658 position "thead"
11659 ]
11660 ]
11661 edge
11662 [
11663 source 3
11664 target 6
11665 graphics
11666 [
11667 fill "#000000"
11668 width 3
11669 targetArrow "standard"
11670 ]
11671 LabelGraphics
11672 [
11673 text "rootElements reference FunctionalArchitectureModel"
11674 fontSize 14
11675 fontName "Consolas"
11676 configuration "AutoFlippingLabel"
11677 model "six_pos"
11678 position "thead"
11679 ]
11680 ]
11681 edge
11682 [
11683 source 3
11684 target 11
11685 graphics
11686 [
11687 fill "#000000"
11688 width 3
11689 targetArrow "standard"
11690 ]
11691 LabelGraphics
11692 [
11693 text "rootElements reference FunctionalArchitectureModel"
11694 fontSize 14
11695 fontName "Consolas"
11696 configuration "AutoFlippingLabel"
11697 model "six_pos"
11698 position "thead"
11699 ]
11700 ]
11701 edge
11702 [
11703 source 9
11704 target 8
11705 graphics
11706 [
11707 fill "#000000"
11708 targetArrow "standard"
11709 ]
11710 LabelGraphics
11711 [
11712 text "data reference FAMTerminator"
11713 fontSize 14
11714 fontName "Consolas"
11715 configuration "AutoFlippingLabel"
11716 model "six_pos"
11717 position "thead"
11718 ]
11719 ]
11720 edge
11721 [
11722 source 7
11723 target 8
11724 graphics
11725 [
11726 fill "#000000"
11727 width 3
11728 targetArrow "standard"
11729 ]
11730 LabelGraphics
11731 [
11732 text "data reference FunctionalInterface"
11733 fontSize 14
11734 fontName "Consolas"
11735 configuration "AutoFlippingLabel"
11736 model "six_pos"
11737 position "thead"
11738 ]
11739 ]
11740 edge
11741 [
11742 source 7
11743 target 10
11744 graphics
11745 [
11746 fill "#000000"
11747 width 3
11748 targetArrow "standard"
11749 ]
11750 LabelGraphics
11751 [
11752 text "data reference FunctionalInterface"
11753 fontSize 14
11754 fontName "Consolas"
11755 configuration "AutoFlippingLabel"
11756 model "six_pos"
11757 position "thead"
11758 ]
11759 ]
11760 edge
11761 [
11762 source 7
11763 target 6
11764 graphics
11765 [
11766 fill "#000000"
11767 targetArrow "standard"
11768 ]
11769 LabelGraphics
11770 [
11771 text "element reference FunctionalInterface"
11772 fontSize 14
11773 fontName "Consolas"
11774 configuration "AutoFlippingLabel"
11775 model "six_pos"
11776 position "thead"
11777 ]
11778 ]
11779 edge
11780 [
11781 source 8
11782 target 9
11783 graphics
11784 [
11785 fill "#000000"
11786 width 3
11787 targetArrow "standard"
11788 ]
11789 LabelGraphics
11790 [
11791 text "terminator reference FunctionalData"
11792 fontSize 14
11793 fontName "Consolas"
11794 configuration "AutoFlippingLabel"
11795 model "six_pos"
11796 position "thead"
11797 ]
11798 ]
11799 edge
11800 [
11801 source 8
11802 target 7
11803 graphics
11804 [
11805 fill "#000000"
11806 targetArrow "standard"
11807 ]
11808 LabelGraphics
11809 [
11810 text "interface reference FunctionalData"
11811 fontSize 14
11812 fontName "Consolas"
11813 configuration "AutoFlippingLabel"
11814 model "six_pos"
11815 position "thead"
11816 ]
11817 ]
11818 edge
11819 [
11820 source 10
11821 target 7
11822 graphics
11823 [
11824 fill "#000000"
11825 targetArrow "standard"
11826 ]
11827 LabelGraphics
11828 [
11829 text "interface reference FunctionalData"
11830 fontSize 14
11831 fontName "Consolas"
11832 configuration "AutoFlippingLabel"
11833 model "six_pos"
11834 position "thead"
11835 ]
11836 ]
11837 edge
11838 [
11839 source 6
11840 target 0
11841 graphics
11842 [
11843 fill "#000000"
11844 targetArrow "standard"
11845 ]
11846 LabelGraphics
11847 [
11848 text "type attribute Function"
11849 fontSize 14
11850 fontName "Consolas"
11851 configuration "AutoFlippingLabel"
11852 model "six_pos"
11853 position "thead"
11854 ]
11855 ]
11856 edge
11857 [
11858 source 11
11859 target 2
11860 graphics
11861 [
11862 fill "#000000"
11863 targetArrow "standard"
11864 ]
11865 LabelGraphics
11866 [
11867 text "type attribute Function"
11868 fontSize 14
11869 fontName "Consolas"
11870 configuration "AutoFlippingLabel"
11871 model "six_pos"
11872 position "thead"
11873 ]
11874 ]
11875]
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 3c09036a..a141edb0 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi
index 21ac69a6..c5049270 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,10 +1,12 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<fam:FunctionalInterface xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel"> 2<fam:FunctionalArchitectureModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel">
3 <data xsi:type="fam:FunctionalInput"/> 3 <rootElements xsi:type="fam:Function"/>
4 <data xsi:type="fam:FunctionalInput"/> 4 <rootElements xsi:type="fam:Function">
5 <data xsi:type="fam:FunctionalOutput"/> 5 <interface>
6 <data xsi:type="fam:FunctionalOutput"> 6 <data xsi:type="fam:FunctionalOutput"/>
7 <terminator/> 7 <data xsi:type="fam:FunctionalOutput">
8 </data> 8 <terminator/>
9 <data xsi:type="fam:FunctionalOutput"/> 9 </data>
10</fam:FunctionalInterface> 10 </interface>
11 </rootElements>
12</fam:FunctionalArchitectureModel>
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 f0a5df58..9f61f0e9 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
@@ -18,3 +18,11 @@ Task;Run;Result;Domain to logic transformation time;Logic to solver transformati
181;1;ModelResultImpl;1;928;1173;8877697600;49;109;128;149;167;83;5;2;0;3 181;1;ModelResultImpl;1;928;1173;8877697600;49;109;128;149;167;83;5;2;0;3
19Task;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 19Task;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
201;1;ModelResultImpl;2;1070;1291;9164916500;97;114;167;249;276;120;8;3;0;3 201;1;ModelResultImpl;2;1070;1291;9164916500;97;114;167;249;276;120;8;3;0;3
21Task;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
221;1;ModelResultImpl;2;1595;1756;13001782700;63;89;115;147;177;94;13;3;0;5
23Task;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
241;1;ModelResultImpl;189;2560;2666;10577938300;240;291;346;491;534;277;137;14;0;10
25Task;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
261;1;ModelResultImpl;16;1673;1881;10488189500;142;240;275;311;375;191;21;7;0;5
27Task;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
281;1;ModelResultImpl;47;1835;2309;9517642900;281;405;544;574;580;325;17;13;0;6
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 5ac9e1dc..f2e524ab 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
@@ -26323,3 +26323,2928 @@ pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference
26323 find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); 26323 find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to);
26324 neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); 26324 neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to);
26325} 26325}
26326import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
26327import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
26328import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
26329
26330//////////
26331// 0. Util
26332//////////
26333private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
26334 PartialInterpretation.problem(interpretation,problem);
26335}
26336
26337/////////////////////////
26338// 0.1 Existence
26339/////////////////////////
26340private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26341 find interpretation(problem,interpretation);
26342 LogicProblem.elements(problem,element);
26343} or {
26344 find interpretation(problem,interpretation);
26345 PartialInterpretation.newElements(interpretation,element);
26346}
26347
26348private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26349 find mustExist(problem,interpretation,element);
26350} or {
26351 find interpretation(problem,interpretation);
26352 neg find elementCloseWorld(element);
26353 PartialInterpretation.openWorldElements(interpretation,element);
26354}
26355
26356private pattern elementCloseWorld(element:DefinedElement) {
26357 PartialInterpretation.openWorldElements(i,element);
26358 PartialInterpretation.maxNewElements(i,0);
26359} or {
26360 Scope.targetTypeInterpretation(scope,interpretation);
26361 PartialTypeInterpratation.elements(interpretation,element);
26362 Scope.maxNewElements(scope,0);
26363}
26364
26365////////////////////////
26366// 0.2 Equivalence
26367////////////////////////
26368pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
26369 find mayExist(problem,interpretation,a);
26370 find mayExist(problem,interpretation,b);
26371 a == b;
26372}
26373
26374////////////////////////
26375// 0.3 Required Patterns by TypeIndexer
26376////////////////////////
26377private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
26378 find interpretation(problem,interpretation);
26379 LogicProblem.types(problem,type);
26380 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26381 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26382}
26383
26384private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
26385 find interpretation(problem,interpretation);
26386 LogicProblem.types(problem,type);
26387 TypeDefinition.elements(type,element);
26388} or {
26389 find interpretation(problem,interpretation);
26390 find typeInterpretation(problem,interpretation,type,typeInterpretation);
26391 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
26392}
26393
26394private pattern isPrimitive(element: PrimitiveElement) {
26395 PrimitiveElement(element);
26396}
26397
26398//////////
26399// 1. Problem-Specific Base Indexers
26400//////////
26401// 1.1 Type Indexers
26402//////////
26403// 1.1.1 primitive Type Indexers
26404//////////
26405
26406//////////
26407// 1.1.2 domain-specific Type Indexers
26408//////////
26409/**
26410 * An element must be an instance of type "Pseudostate class".
26411 */
26412private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26413 Type.name(type,"Pseudostate class");
26414 find directInstanceOf(problem,interpretation,element,type);
26415}
26416private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26417 find interpretation(problem,interpretation);
26418 PartialInterpretation.scopes(interpretation,scope);
26419 Scope.targetTypeInterpretation(scope,typeInterpretation);
26420 Scope.maxNewElements(scope,0);
26421 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26422 Type.name(type,"Pseudostate class");
26423}
26424
26425/**
26426 * An element may be an instance of type "Pseudostate class".
26427 */
26428private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26429{
26430 find interpretation(problem,interpretation);
26431 PartialInterpretation.newElements(interpretation,element);
26432 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26433 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26434 neg find mustInstanceOfEntry_class(problem,interpretation,element);
26435 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26436 neg find mustInstanceOfChoice_class(problem,interpretation,element);
26437 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26438 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
26439 neg find mustInstanceOfExit_class(problem,interpretation,element);
26440 neg find scopeDisallowsNewPseudostate_class(problem, interpretation);
26441 neg find isPrimitive(element);
26442} or {
26443 find interpretation(problem,interpretation);
26444 PartialInterpretation.openWorldElements(interpretation,element);
26445 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26446 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26447 neg find mustInstanceOfEntry_class(problem,interpretation,element);
26448 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26449 neg find mustInstanceOfChoice_class(problem,interpretation,element);
26450 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26451 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
26452 neg find mustInstanceOfExit_class(problem,interpretation,element);
26453 neg find scopeDisallowsNewPseudostate_class(problem, interpretation);
26454 neg find isPrimitive(element);
26455} or
26456{ find mustInstanceOfPseudostate_class(problem,interpretation,element); }
26457/**
26458 * An element must be an instance of type "Vertex class".
26459 */
26460private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26461 Type.name(type,"Vertex class");
26462 find directInstanceOf(problem,interpretation,element,type);
26463}
26464private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26465 find interpretation(problem,interpretation);
26466 PartialInterpretation.scopes(interpretation,scope);
26467 Scope.targetTypeInterpretation(scope,typeInterpretation);
26468 Scope.maxNewElements(scope,0);
26469 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26470 Type.name(type,"Vertex class");
26471}
26472
26473/**
26474 * An element may be an instance of type "Vertex class".
26475 */
26476private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26477{
26478 find interpretation(problem,interpretation);
26479 PartialInterpretation.newElements(interpretation,element);
26480 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
26481 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26482 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26483 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26484 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26485 neg find scopeDisallowsNewVertex_class(problem, interpretation);
26486 neg find isPrimitive(element);
26487} or {
26488 find interpretation(problem,interpretation);
26489 PartialInterpretation.openWorldElements(interpretation,element);
26490 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
26491 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26492 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26493 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26494 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26495 neg find scopeDisallowsNewVertex_class(problem, interpretation);
26496 neg find isPrimitive(element);
26497} or
26498{ find mustInstanceOfVertex_class(problem,interpretation,element); }
26499/**
26500 * An element must be an instance of type "Region class".
26501 */
26502private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26503 Type.name(type,"Region class");
26504 find directInstanceOf(problem,interpretation,element,type);
26505}
26506private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26507 find interpretation(problem,interpretation);
26508 PartialInterpretation.scopes(interpretation,scope);
26509 Scope.targetTypeInterpretation(scope,typeInterpretation);
26510 Scope.maxNewElements(scope,0);
26511 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26512 Type.name(type,"Region class");
26513}
26514
26515/**
26516 * An element may be an instance of type "Region class".
26517 */
26518private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26519{
26520 find interpretation(problem,interpretation);
26521 PartialInterpretation.newElements(interpretation,element);
26522 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26523 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26524 neg find mustInstanceOfVertex_class(problem,interpretation,element);
26525 neg find scopeDisallowsNewRegion_class(problem, interpretation);
26526 neg find isPrimitive(element);
26527} or {
26528 find interpretation(problem,interpretation);
26529 PartialInterpretation.openWorldElements(interpretation,element);
26530 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26531 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26532 neg find mustInstanceOfVertex_class(problem,interpretation,element);
26533 neg find scopeDisallowsNewRegion_class(problem, interpretation);
26534 neg find isPrimitive(element);
26535} or
26536{ find mustInstanceOfRegion_class(problem,interpretation,element); }
26537/**
26538 * An element must be an instance of type "Transition class".
26539 */
26540private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26541 Type.name(type,"Transition class");
26542 find directInstanceOf(problem,interpretation,element,type);
26543}
26544private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26545 find interpretation(problem,interpretation);
26546 PartialInterpretation.scopes(interpretation,scope);
26547 Scope.targetTypeInterpretation(scope,typeInterpretation);
26548 Scope.maxNewElements(scope,0);
26549 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26550 Type.name(type,"Transition class");
26551}
26552
26553/**
26554 * An element may be an instance of type "Transition class".
26555 */
26556private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26557{
26558 find interpretation(problem,interpretation);
26559 PartialInterpretation.newElements(interpretation,element);
26560 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26561 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26562 neg find mustInstanceOfVertex_class(problem,interpretation,element);
26563 neg find scopeDisallowsNewTransition_class(problem, interpretation);
26564 neg find isPrimitive(element);
26565} or {
26566 find interpretation(problem,interpretation);
26567 PartialInterpretation.openWorldElements(interpretation,element);
26568 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26569 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26570 neg find mustInstanceOfVertex_class(problem,interpretation,element);
26571 neg find scopeDisallowsNewTransition_class(problem, interpretation);
26572 neg find isPrimitive(element);
26573} or
26574{ find mustInstanceOfTransition_class(problem,interpretation,element); }
26575/**
26576 * An element must be an instance of type "Statechart class".
26577 */
26578private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26579 Type.name(type,"Statechart class");
26580 find directInstanceOf(problem,interpretation,element,type);
26581}
26582private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26583 find interpretation(problem,interpretation);
26584 PartialInterpretation.scopes(interpretation,scope);
26585 Scope.targetTypeInterpretation(scope,typeInterpretation);
26586 Scope.maxNewElements(scope,0);
26587 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26588 Type.name(type,"Statechart class");
26589}
26590
26591/**
26592 * An element may be an instance of type "Statechart class".
26593 */
26594private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26595{
26596 find interpretation(problem,interpretation);
26597 PartialInterpretation.newElements(interpretation,element);
26598 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26599 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26600 neg find mustInstanceOfVertex_class(problem,interpretation,element);
26601 neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element);
26602 neg find scopeDisallowsNewStatechart_class(problem, interpretation);
26603 neg find isPrimitive(element);
26604} or {
26605 find interpretation(problem,interpretation);
26606 PartialInterpretation.openWorldElements(interpretation,element);
26607 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26608 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26609 neg find mustInstanceOfVertex_class(problem,interpretation,element);
26610 neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element);
26611 neg find scopeDisallowsNewStatechart_class(problem, interpretation);
26612 neg find isPrimitive(element);
26613} or
26614{ find mustInstanceOfStatechart_class(problem,interpretation,element); }
26615/**
26616 * An element must be an instance of type "Entry class".
26617 */
26618private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26619 Type.name(type,"Entry class");
26620 find directInstanceOf(problem,interpretation,element,type);
26621}
26622private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26623 find interpretation(problem,interpretation);
26624 PartialInterpretation.scopes(interpretation,scope);
26625 Scope.targetTypeInterpretation(scope,typeInterpretation);
26626 Scope.maxNewElements(scope,0);
26627 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26628 Type.name(type,"Entry class");
26629}
26630
26631/**
26632 * An element may be an instance of type "Entry class".
26633 */
26634private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26635{
26636 find interpretation(problem,interpretation);
26637 PartialInterpretation.newElements(interpretation,element);
26638 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26639 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26640 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26641 neg find mustInstanceOfChoice_class(problem,interpretation,element);
26642 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26643 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
26644 neg find mustInstanceOfExit_class(problem,interpretation,element);
26645 neg find scopeDisallowsNewEntry_class(problem, interpretation);
26646 neg find isPrimitive(element);
26647} or {
26648 find interpretation(problem,interpretation);
26649 PartialInterpretation.openWorldElements(interpretation,element);
26650 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26651 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26652 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26653 neg find mustInstanceOfChoice_class(problem,interpretation,element);
26654 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26655 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
26656 neg find mustInstanceOfExit_class(problem,interpretation,element);
26657 neg find scopeDisallowsNewEntry_class(problem, interpretation);
26658 neg find isPrimitive(element);
26659} or
26660{ find mustInstanceOfEntry_class(problem,interpretation,element); }
26661/**
26662 * An element must be an instance of type "Synchronization class".
26663 */
26664private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26665 Type.name(type,"Synchronization class");
26666 find directInstanceOf(problem,interpretation,element,type);
26667}
26668private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26669 find interpretation(problem,interpretation);
26670 PartialInterpretation.scopes(interpretation,scope);
26671 Scope.targetTypeInterpretation(scope,typeInterpretation);
26672 Scope.maxNewElements(scope,0);
26673 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26674 Type.name(type,"Synchronization class");
26675}
26676
26677/**
26678 * An element may be an instance of type "Synchronization class".
26679 */
26680private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26681{
26682 find interpretation(problem,interpretation);
26683 PartialInterpretation.newElements(interpretation,element);
26684 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26685 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26686 neg find mustInstanceOfEntry_class(problem,interpretation,element);
26687 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26688 neg find mustInstanceOfChoice_class(problem,interpretation,element);
26689 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26690 neg find mustInstanceOfExit_class(problem,interpretation,element);
26691 neg find scopeDisallowsNewSynchronization_class(problem, interpretation);
26692 neg find isPrimitive(element);
26693} or {
26694 find interpretation(problem,interpretation);
26695 PartialInterpretation.openWorldElements(interpretation,element);
26696 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26697 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26698 neg find mustInstanceOfEntry_class(problem,interpretation,element);
26699 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26700 neg find mustInstanceOfChoice_class(problem,interpretation,element);
26701 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26702 neg find mustInstanceOfExit_class(problem,interpretation,element);
26703 neg find scopeDisallowsNewSynchronization_class(problem, interpretation);
26704 neg find isPrimitive(element);
26705} or
26706{ find mustInstanceOfSynchronization_class(problem,interpretation,element); }
26707/**
26708 * An element must be an instance of type "State class".
26709 */
26710private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26711 Type.name(type,"State class");
26712 find directInstanceOf(problem,interpretation,element,type);
26713}
26714private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26715 find interpretation(problem,interpretation);
26716 PartialInterpretation.scopes(interpretation,scope);
26717 Scope.targetTypeInterpretation(scope,typeInterpretation);
26718 Scope.maxNewElements(scope,0);
26719 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26720 Type.name(type,"State class");
26721}
26722
26723/**
26724 * An element may be an instance of type "State class".
26725 */
26726private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26727{
26728 find interpretation(problem,interpretation);
26729 PartialInterpretation.newElements(interpretation,element);
26730 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
26731 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26732 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
26733 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26734 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
26735 neg find scopeDisallowsNewState_class(problem, interpretation);
26736 neg find isPrimitive(element);
26737} or {
26738 find interpretation(problem,interpretation);
26739 PartialInterpretation.openWorldElements(interpretation,element);
26740 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
26741 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26742 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
26743 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26744 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
26745 neg find scopeDisallowsNewState_class(problem, interpretation);
26746 neg find isPrimitive(element);
26747} or
26748{ find mustInstanceOfState_class(problem,interpretation,element); }
26749/**
26750 * An element must be an instance of type "RegularState class".
26751 */
26752private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26753 Type.name(type,"RegularState class");
26754 find directInstanceOf(problem,interpretation,element,type);
26755}
26756private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26757 find interpretation(problem,interpretation);
26758 PartialInterpretation.scopes(interpretation,scope);
26759 Scope.targetTypeInterpretation(scope,typeInterpretation);
26760 Scope.maxNewElements(scope,0);
26761 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26762 Type.name(type,"RegularState class");
26763}
26764
26765/**
26766 * An element may be an instance of type "RegularState class".
26767 */
26768private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26769{
26770 find interpretation(problem,interpretation);
26771 PartialInterpretation.newElements(interpretation,element);
26772 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
26773 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26774 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26775 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26776 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
26777 neg find scopeDisallowsNewRegularState_class(problem, interpretation);
26778 neg find isPrimitive(element);
26779} or {
26780 find interpretation(problem,interpretation);
26781 PartialInterpretation.openWorldElements(interpretation,element);
26782 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
26783 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26784 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26785 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26786 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
26787 neg find scopeDisallowsNewRegularState_class(problem, interpretation);
26788 neg find isPrimitive(element);
26789} or
26790{ find mustInstanceOfRegularState_class(problem,interpretation,element); }
26791/**
26792 * An element must be an instance of type "CompositeElement class".
26793 */
26794private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26795 Type.name(type,"CompositeElement class");
26796 find directInstanceOf(problem,interpretation,element,type);
26797}
26798private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26799 find interpretation(problem,interpretation);
26800 PartialInterpretation.scopes(interpretation,scope);
26801 Scope.targetTypeInterpretation(scope,typeInterpretation);
26802 Scope.maxNewElements(scope,0);
26803 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26804 Type.name(type,"CompositeElement class");
26805}
26806
26807/**
26808 * An element may be an instance of type "CompositeElement class".
26809 */
26810private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26811{
26812 find interpretation(problem,interpretation);
26813 PartialInterpretation.newElements(interpretation,element);
26814 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26815 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
26816 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26817 neg find mustInstanceOfVertex_class(problem,interpretation,element);
26818 neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element);
26819 neg find scopeDisallowsNewCompositeElement_class(problem, interpretation);
26820 neg find isPrimitive(element);
26821} or {
26822 find interpretation(problem,interpretation);
26823 PartialInterpretation.openWorldElements(interpretation,element);
26824 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26825 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
26826 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26827 neg find mustInstanceOfVertex_class(problem,interpretation,element);
26828 neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element);
26829 neg find scopeDisallowsNewCompositeElement_class(problem, interpretation);
26830 neg find isPrimitive(element);
26831} or
26832{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); }
26833/**
26834 * An element must be an instance of type "Choice class".
26835 */
26836private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26837 Type.name(type,"Choice class");
26838 find directInstanceOf(problem,interpretation,element,type);
26839}
26840private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26841 find interpretation(problem,interpretation);
26842 PartialInterpretation.scopes(interpretation,scope);
26843 Scope.targetTypeInterpretation(scope,typeInterpretation);
26844 Scope.maxNewElements(scope,0);
26845 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26846 Type.name(type,"Choice class");
26847}
26848
26849/**
26850 * An element may be an instance of type "Choice class".
26851 */
26852private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26853{
26854 find interpretation(problem,interpretation);
26855 PartialInterpretation.newElements(interpretation,element);
26856 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26857 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26858 neg find mustInstanceOfEntry_class(problem,interpretation,element);
26859 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26860 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26861 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
26862 neg find mustInstanceOfExit_class(problem,interpretation,element);
26863 neg find scopeDisallowsNewChoice_class(problem, interpretation);
26864 neg find isPrimitive(element);
26865} or {
26866 find interpretation(problem,interpretation);
26867 PartialInterpretation.openWorldElements(interpretation,element);
26868 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26869 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26870 neg find mustInstanceOfEntry_class(problem,interpretation,element);
26871 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26872 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26873 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
26874 neg find mustInstanceOfExit_class(problem,interpretation,element);
26875 neg find scopeDisallowsNewChoice_class(problem, interpretation);
26876 neg find isPrimitive(element);
26877} or
26878{ find mustInstanceOfChoice_class(problem,interpretation,element); }
26879/**
26880 * An element must be an instance of type "Exit class".
26881 */
26882private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26883 Type.name(type,"Exit class");
26884 find directInstanceOf(problem,interpretation,element,type);
26885}
26886private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26887 find interpretation(problem,interpretation);
26888 PartialInterpretation.scopes(interpretation,scope);
26889 Scope.targetTypeInterpretation(scope,typeInterpretation);
26890 Scope.maxNewElements(scope,0);
26891 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26892 Type.name(type,"Exit class");
26893}
26894
26895/**
26896 * An element may be an instance of type "Exit class".
26897 */
26898private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26899{
26900 find interpretation(problem,interpretation);
26901 PartialInterpretation.newElements(interpretation,element);
26902 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26903 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26904 neg find mustInstanceOfEntry_class(problem,interpretation,element);
26905 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26906 neg find mustInstanceOfChoice_class(problem,interpretation,element);
26907 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26908 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
26909 neg find scopeDisallowsNewExit_class(problem, interpretation);
26910 neg find isPrimitive(element);
26911} or {
26912 find interpretation(problem,interpretation);
26913 PartialInterpretation.openWorldElements(interpretation,element);
26914 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26915 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26916 neg find mustInstanceOfEntry_class(problem,interpretation,element);
26917 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26918 neg find mustInstanceOfChoice_class(problem,interpretation,element);
26919 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
26920 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
26921 neg find scopeDisallowsNewExit_class(problem, interpretation);
26922 neg find isPrimitive(element);
26923} or
26924{ find mustInstanceOfExit_class(problem,interpretation,element); }
26925/**
26926 * An element must be an instance of type "FinalState class".
26927 */
26928private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26929 Type.name(type,"FinalState class");
26930 find directInstanceOf(problem,interpretation,element,type);
26931}
26932private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26933 find interpretation(problem,interpretation);
26934 PartialInterpretation.scopes(interpretation,scope);
26935 Scope.targetTypeInterpretation(scope,typeInterpretation);
26936 Scope.maxNewElements(scope,0);
26937 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26938 Type.name(type,"FinalState class");
26939}
26940
26941/**
26942 * An element may be an instance of type "FinalState class".
26943 */
26944private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26945{
26946 find interpretation(problem,interpretation);
26947 PartialInterpretation.newElements(interpretation,element);
26948 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
26949 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26950 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26951 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26952 neg find scopeDisallowsNewFinalState_class(problem, interpretation);
26953 neg find isPrimitive(element);
26954} or {
26955 find interpretation(problem,interpretation);
26956 PartialInterpretation.openWorldElements(interpretation,element);
26957 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
26958 neg find mustInstanceOfTransition_class(problem,interpretation,element);
26959 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
26960 neg find mustInstanceOfRegion_class(problem,interpretation,element);
26961 neg find scopeDisallowsNewFinalState_class(problem, interpretation);
26962 neg find isPrimitive(element);
26963} or
26964{ find mustInstanceOfFinalState_class(problem,interpretation,element); }
26965/**
26966 * An element must be an instance of type "Statechart class DefinedPart".
26967 */
26968private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26969 Type.name(type,"Statechart class DefinedPart");
26970 find directInstanceOf(problem,interpretation,element,type);
26971}
26972private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
26973 find interpretation(problem,interpretation);
26974 PartialInterpretation.scopes(interpretation,scope);
26975 Scope.targetTypeInterpretation(scope,typeInterpretation);
26976 Scope.maxNewElements(scope,0);
26977 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26978 Type.name(type,"Statechart class DefinedPart");
26979}
26980
26981/**
26982 * An element may be an instance of type "Statechart class DefinedPart".
26983 */
26984private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26985{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); }
26986/**
26987 * An element must be an instance of type "Statechart class UndefinedPart".
26988 */
26989private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26990 Type.name(type,"Statechart class UndefinedPart");
26991 find directInstanceOf(problem,interpretation,element,type);
26992}
26993private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
26994 find interpretation(problem,interpretation);
26995 PartialInterpretation.scopes(interpretation,scope);
26996 Scope.targetTypeInterpretation(scope,typeInterpretation);
26997 Scope.maxNewElements(scope,0);
26998 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26999 Type.name(type,"Statechart class UndefinedPart");
27000}
27001
27002/**
27003 * An element may be an instance of type "Statechart class UndefinedPart".
27004 */
27005private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27006{
27007 find interpretation(problem,interpretation);
27008 PartialInterpretation.newElements(interpretation,element);
27009 neg find mustInstanceOfTransition_class(problem,interpretation,element);
27010 neg find mustInstanceOfRegion_class(problem,interpretation,element);
27011 neg find mustInstanceOfVertex_class(problem,interpretation,element);
27012 neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation);
27013 neg find isPrimitive(element);
27014} or {
27015 find interpretation(problem,interpretation);
27016 PartialInterpretation.openWorldElements(interpretation,element);
27017 neg find mustInstanceOfTransition_class(problem,interpretation,element);
27018 neg find mustInstanceOfRegion_class(problem,interpretation,element);
27019 neg find mustInstanceOfVertex_class(problem,interpretation,element);
27020 neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation);
27021 neg find isPrimitive(element);
27022} or
27023{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); }
27024/**
27025 * An element must be an instance of type "CompositeElement class DefinedPart".
27026 */
27027private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27028 Type.name(type,"CompositeElement class DefinedPart");
27029 find directInstanceOf(problem,interpretation,element,type);
27030}
27031private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
27032 find interpretation(problem,interpretation);
27033 PartialInterpretation.scopes(interpretation,scope);
27034 Scope.targetTypeInterpretation(scope,typeInterpretation);
27035 Scope.maxNewElements(scope,0);
27036 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27037 Type.name(type,"CompositeElement class DefinedPart");
27038}
27039
27040/**
27041 * An element may be an instance of type "CompositeElement class DefinedPart".
27042 */
27043private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27044{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); }
27045/**
27046 * An element must be an instance of type "CompositeElement class UndefinedPart".
27047 */
27048private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27049 Type.name(type,"CompositeElement class UndefinedPart");
27050 find directInstanceOf(problem,interpretation,element,type);
27051}
27052private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
27053 find interpretation(problem,interpretation);
27054 PartialInterpretation.scopes(interpretation,scope);
27055 Scope.targetTypeInterpretation(scope,typeInterpretation);
27056 Scope.maxNewElements(scope,0);
27057 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27058 Type.name(type,"CompositeElement class UndefinedPart");
27059}
27060
27061/**
27062 * An element may be an instance of type "CompositeElement class UndefinedPart".
27063 */
27064private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27065{
27066 find interpretation(problem,interpretation);
27067 PartialInterpretation.newElements(interpretation,element);
27068 neg find mustInstanceOfTransition_class(problem,interpretation,element);
27069 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
27070 neg find mustInstanceOfRegion_class(problem,interpretation,element);
27071 neg find mustInstanceOfVertex_class(problem,interpretation,element);
27072 neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation);
27073 neg find isPrimitive(element);
27074} or {
27075 find interpretation(problem,interpretation);
27076 PartialInterpretation.openWorldElements(interpretation,element);
27077 neg find mustInstanceOfTransition_class(problem,interpretation,element);
27078 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
27079 neg find mustInstanceOfRegion_class(problem,interpretation,element);
27080 neg find mustInstanceOfVertex_class(problem,interpretation,element);
27081 neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation);
27082 neg find isPrimitive(element);
27083} or
27084{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); }
27085
27086//////////
27087// 1.2 Relation Declaration Indexers
27088//////////
27089/**
27090 * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target)
27091 */
27092private pattern mustInRelationincomingTransitions_reference_Vertex(
27093 problem:LogicProblem, interpretation:PartialInterpretation,
27094 source: DefinedElement, target:DefinedElement)
27095{
27096 find interpretation(problem,interpretation);
27097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex");
27099 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27100 BinaryElementRelationLink.param1(link,source);
27101 BinaryElementRelationLink.param2(link,target);
27102}
27103/**
27104 * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target)
27105 */
27106private pattern mayInRelationincomingTransitions_reference_Vertex(
27107 problem:LogicProblem, interpretation:PartialInterpretation,
27108 source: DefinedElement, target:DefinedElement)
27109{
27110 find interpretation(problem,interpretation);
27111 // The two endpoint of the link have to exist
27112 find mayExist(problem, interpretation, source);
27113 find mayExist(problem, interpretation, target);
27114 // Type consistency
27115 find mayInstanceOfVertex_class(problem,interpretation,source);
27116 find mayInstanceOfTransition_class(problem,interpretation,target);
27117 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
27118 // the upper bound of the opposite reference multiplicity should be considered.
27119 numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_);
27120 check(numberOfExistingOppositeReferences < 1);
27121} or {
27122 find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target);
27123}
27124/**
27125 * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target)
27126 */
27127private pattern mustInRelationoutgoingTransitions_reference_Vertex(
27128 problem:LogicProblem, interpretation:PartialInterpretation,
27129 source: DefinedElement, target:DefinedElement)
27130{
27131 find interpretation(problem,interpretation);
27132 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27133 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex");
27134 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27135 BinaryElementRelationLink.param1(link,source);
27136 BinaryElementRelationLink.param2(link,target);
27137}
27138/**
27139 * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target)
27140 */
27141private pattern mayInRelationoutgoingTransitions_reference_Vertex(
27142 problem:LogicProblem, interpretation:PartialInterpretation,
27143 source: DefinedElement, target:DefinedElement)
27144{
27145 find interpretation(problem,interpretation);
27146 // The two endpoint of the link have to exist
27147 find mayExist(problem, interpretation, source);
27148 find mayExist(problem, interpretation, target);
27149 // Type consistency
27150 find mayInstanceOfVertex_class(problem,interpretation,source);
27151 find mayInstanceOfTransition_class(problem,interpretation,target);
27152 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
27153 // the upper bound of the opposite reference multiplicity should be considered.
27154 numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_);
27155 check(numberOfExistingOppositeReferences < 1);
27156 // The reference is containment, then a new reference cannot be create if:
27157 // 1. Multiple parents
27158 neg find mustContains4(problem,interpretation,_,target);
27159 // 2. Circle in the containment hierarchy
27160 neg find mustTransitiveContains(source,target);
27161} or {
27162 find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target);
27163}
27164/**
27165 * Matcher for detecting tuples t where []vertices reference Region(source,target)
27166 */
27167private pattern mustInRelationvertices_reference_Region(
27168 problem:LogicProblem, interpretation:PartialInterpretation,
27169 source: DefinedElement, target:DefinedElement)
27170{
27171 find interpretation(problem,interpretation);
27172 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27173 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region");
27174 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27175 BinaryElementRelationLink.param1(link,source);
27176 BinaryElementRelationLink.param2(link,target);
27177}
27178/**
27179 * Matcher for detecting tuples t where <>vertices reference Region(source,target)
27180 */
27181private pattern mayInRelationvertices_reference_Region(
27182 problem:LogicProblem, interpretation:PartialInterpretation,
27183 source: DefinedElement, target:DefinedElement)
27184{
27185 find interpretation(problem,interpretation);
27186 // The two endpoint of the link have to exist
27187 find mayExist(problem, interpretation, source);
27188 find mayExist(problem, interpretation, target);
27189 // Type consistency
27190 find mayInstanceOfRegion_class(problem,interpretation,source);
27191 find mayInstanceOfVertex_class(problem,interpretation,target);
27192 // The reference is containment, then a new reference cannot be create if:
27193 // 1. Multiple parents
27194 neg find mustContains4(problem,interpretation,_,target);
27195 // 2. Circle in the containment hierarchy
27196 neg find mustTransitiveContains(source,target);
27197} or {
27198 find mustInRelationvertices_reference_Region(problem,interpretation,source,target);
27199}
27200/**
27201 * Matcher for detecting tuples t where []target reference Transition(source,target)
27202 */
27203private pattern mustInRelationtarget_reference_Transition(
27204 problem:LogicProblem, interpretation:PartialInterpretation,
27205 source: DefinedElement, target:DefinedElement)
27206{
27207 find interpretation(problem,interpretation);
27208 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27209 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition");
27210 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27211 BinaryElementRelationLink.param1(link,source);
27212 BinaryElementRelationLink.param2(link,target);
27213}
27214/**
27215 * Matcher for detecting tuples t where <>target reference Transition(source,target)
27216 */
27217private pattern mayInRelationtarget_reference_Transition(
27218 problem:LogicProblem, interpretation:PartialInterpretation,
27219 source: DefinedElement, target:DefinedElement)
27220{
27221 find interpretation(problem,interpretation);
27222 // The two endpoint of the link have to exist
27223 find mayExist(problem, interpretation, source);
27224 find mayExist(problem, interpretation, target);
27225 // Type consistency
27226 find mayInstanceOfTransition_class(problem,interpretation,source);
27227 find mayInstanceOfVertex_class(problem,interpretation,target);
27228 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
27229 // the upper bound of the multiplicity should be considered.
27230 numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_);
27231 check(numberOfExistingReferences < 1);
27232} or {
27233 find mustInRelationtarget_reference_Transition(problem,interpretation,source,target);
27234}
27235/**
27236 * Matcher for detecting tuples t where []source reference Transition(source,target)
27237 */
27238private pattern mustInRelationsource_reference_Transition(
27239 problem:LogicProblem, interpretation:PartialInterpretation,
27240 source: DefinedElement, target:DefinedElement)
27241{
27242 find interpretation(problem,interpretation);
27243 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27244 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition");
27245 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27246 BinaryElementRelationLink.param1(link,source);
27247 BinaryElementRelationLink.param2(link,target);
27248}
27249/**
27250 * Matcher for detecting tuples t where <>source reference Transition(source,target)
27251 */
27252private pattern mayInRelationsource_reference_Transition(
27253 problem:LogicProblem, interpretation:PartialInterpretation,
27254 source: DefinedElement, target:DefinedElement)
27255{
27256 find interpretation(problem,interpretation);
27257 // The two endpoint of the link have to exist
27258 find mayExist(problem, interpretation, source);
27259 find mayExist(problem, interpretation, target);
27260 // Type consistency
27261 find mayInstanceOfTransition_class(problem,interpretation,source);
27262 find mayInstanceOfVertex_class(problem,interpretation,target);
27263 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
27264 // the upper bound of the multiplicity should be considered.
27265 numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_);
27266 check(numberOfExistingReferences < 1);
27267 // The eOpposite of the reference is containment, then a referene cannot be created if
27268 // 1. Multiple parents
27269 neg find mustContains4(problem,interpretation,source,_);
27270 // 2. Circle in the containment hierarchy
27271 neg find mustTransitiveContains(source,target);
27272} or {
27273 find mustInRelationsource_reference_Transition(problem,interpretation,source,target);
27274}
27275/**
27276 * Matcher for detecting tuples t where []regions reference CompositeElement(source,target)
27277 */
27278private pattern mustInRelationregions_reference_CompositeElement(
27279 problem:LogicProblem, interpretation:PartialInterpretation,
27280 source: DefinedElement, target:DefinedElement)
27281{
27282 find interpretation(problem,interpretation);
27283 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27284 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement");
27285 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27286 BinaryElementRelationLink.param1(link,source);
27287 BinaryElementRelationLink.param2(link,target);
27288}
27289/**
27290 * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target)
27291 */
27292private pattern mayInRelationregions_reference_CompositeElement(
27293 problem:LogicProblem, interpretation:PartialInterpretation,
27294 source: DefinedElement, target:DefinedElement)
27295{
27296 find interpretation(problem,interpretation);
27297 // The two endpoint of the link have to exist
27298 find mayExist(problem, interpretation, source);
27299 find mayExist(problem, interpretation, target);
27300 // Type consistency
27301 find mayInstanceOfCompositeElement_class(problem,interpretation,source);
27302 find mayInstanceOfRegion_class(problem,interpretation,target);
27303 // The reference is containment, then a new reference cannot be create if:
27304 // 1. Multiple parents
27305 neg find mustContains4(problem,interpretation,_,target);
27306 // 2. Circle in the containment hierarchy
27307 neg find mustTransitiveContains(source,target);
27308} or {
27309 find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target);
27310}
27311
27312//////////
27313// 1.3 Relation Definition Indexers
27314//////////
27315// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion
27316private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(
27317 problem:LogicProblem, interpretation:PartialInterpretation,
27318 var_r1, var_e1)
27319{
27320 find interpretation(problem,interpretation);
27321 find mustInstanceOfRegion_class(problem,interpretation,var_r1);
27322 find mustInstanceOfEntry_class(problem,interpretation,var_e1);
27323 // r1 is exported
27324 // e1 is exported
27325 find mustInstanceOfRegion_class(problem,interpretation,var_r1);
27326 find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0);
27327 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
27328 var_virtual0 == var_e1;
27329}
27330private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(
27331 problem:LogicProblem, interpretation:PartialInterpretation,
27332 var_r1, var_e1)
27333{
27334 find interpretation(problem,interpretation);
27335 find mayInstanceOfRegion_class(problem,interpretation,var_r1);
27336 find mayInstanceOfEntry_class(problem,interpretation,var_e1);
27337 // r1 is exported
27338 // e1 is exported
27339 find mayInstanceOfRegion_class(problem,interpretation,var_r1);
27340 find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0);
27341 find mayInstanceOfVertex_class(problem,interpretation,var_virtual0);
27342 find mayEquivalent(problem, interpretation, var_virtual0, var_e1);
27343}
27344private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(
27345 problem:LogicProblem, interpretation:PartialInterpretation,
27346 var_r1, var_e1)
27347{
27348 find interpretation(problem,interpretation);
27349 find mustInstanceOfRegion_class(problem,interpretation,var_r1);
27350 find mustInstanceOfEntry_class(problem,interpretation,var_e1);
27351 // r1 is exported
27352 // e1 is exported
27353 find mustInstanceOfRegion_class(problem,interpretation,var_r1);
27354 find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0);
27355 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
27356 var_virtual0 == var_e1;
27357}
27358// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion
27359private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(
27360 problem:LogicProblem, interpretation:PartialInterpretation,
27361 var_r1)
27362{
27363 find interpretation(problem,interpretation);
27364 find mustInstanceOfRegion_class(problem,interpretation,var_r1);
27365 // r1 is exported
27366 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0);
27367}
27368private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(
27369 problem:LogicProblem, interpretation:PartialInterpretation,
27370 var_r1)
27371{
27372 find interpretation(problem,interpretation);
27373 find mayInstanceOfRegion_class(problem,interpretation,var_r1);
27374 // r1 is exported
27375 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0);
27376}
27377private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(
27378 problem:LogicProblem, interpretation:PartialInterpretation,
27379 var_r1)
27380{
27381 find interpretation(problem,interpretation);
27382 find mustInstanceOfRegion_class(problem,interpretation,var_r1);
27383 // r1 is exported
27384 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0);
27385}
27386// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion
27387private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(
27388 problem:LogicProblem, interpretation:PartialInterpretation,
27389 var_r)
27390{
27391 find interpretation(problem,interpretation);
27392 find mustInstanceOfRegion_class(problem,interpretation,var_r);
27393 // r is exported
27394 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1);
27395 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2);
27396 neg find mayEquivalent(problem, interpretation, var_e1, var_e2);
27397}
27398private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(
27399 problem:LogicProblem, interpretation:PartialInterpretation,
27400 var_r)
27401{
27402 find interpretation(problem,interpretation);
27403 find mayInstanceOfRegion_class(problem,interpretation,var_r);
27404 // r is exported
27405 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1);
27406 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2);
27407 var_e1 != var_e2;
27408}
27409private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(
27410 problem:LogicProblem, interpretation:PartialInterpretation,
27411 var_r)
27412{
27413 find interpretation(problem,interpretation);
27414 find mustInstanceOfRegion_class(problem,interpretation,var_r);
27415 // r is exported
27416 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1);
27417 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2);
27418 var_e1 != var_e2;
27419}
27420// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition
27421private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(
27422 problem:LogicProblem, interpretation:PartialInterpretation,
27423 var_t, var_src, var_trg)
27424{
27425 find interpretation(problem,interpretation);
27426 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27427 find mustInstanceOfVertex_class(problem,interpretation,var_src);
27428 find mustInstanceOfVertex_class(problem,interpretation,var_trg);
27429 // t is exported
27430 // src is exported
27431 // trg is exported
27432 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27433 find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0);
27434 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
27435 var_virtual0 == var_src;
27436 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27437 find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1);
27438 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
27439 var_virtual1 == var_trg;
27440}
27441private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(
27442 problem:LogicProblem, interpretation:PartialInterpretation,
27443 var_t, var_src, var_trg)
27444{
27445 find interpretation(problem,interpretation);
27446 find mayInstanceOfTransition_class(problem,interpretation,var_t);
27447 find mayInstanceOfVertex_class(problem,interpretation,var_src);
27448 find mayInstanceOfVertex_class(problem,interpretation,var_trg);
27449 // t is exported
27450 // src is exported
27451 // trg is exported
27452 find mayInstanceOfTransition_class(problem,interpretation,var_t);
27453 find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0);
27454 find mayInstanceOfVertex_class(problem,interpretation,var_virtual0);
27455 find mayEquivalent(problem, interpretation, var_virtual0, var_src);
27456 find mayInstanceOfTransition_class(problem,interpretation,var_t);
27457 find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1);
27458 find mayInstanceOfVertex_class(problem,interpretation,var_virtual1);
27459 find mayEquivalent(problem, interpretation, var_virtual1, var_trg);
27460}
27461private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(
27462 problem:LogicProblem, interpretation:PartialInterpretation,
27463 var_t, var_src, var_trg)
27464{
27465 find interpretation(problem,interpretation);
27466 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27467 find mustInstanceOfVertex_class(problem,interpretation,var_src);
27468 find mustInstanceOfVertex_class(problem,interpretation,var_trg);
27469 // t is exported
27470 // src is exported
27471 // trg is exported
27472 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27473 find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0);
27474 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
27475 var_virtual0 == var_src;
27476 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27477 find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1);
27478 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
27479 var_virtual1 == var_trg;
27480}
27481// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry
27482private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(
27483 problem:LogicProblem, interpretation:PartialInterpretation,
27484 var_t, var_e)
27485{
27486 find interpretation(problem,interpretation);
27487 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27488 find mustInstanceOfEntry_class(problem,interpretation,var_e);
27489 // t is exported
27490 // e is exported
27491 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e);
27492}
27493private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(
27494 problem:LogicProblem, interpretation:PartialInterpretation,
27495 var_t, var_e)
27496{
27497 find interpretation(problem,interpretation);
27498 find mayInstanceOfTransition_class(problem,interpretation,var_t);
27499 find mayInstanceOfEntry_class(problem,interpretation,var_e);
27500 // t is exported
27501 // e is exported
27502 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e);
27503}
27504private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(
27505 problem:LogicProblem, interpretation:PartialInterpretation,
27506 var_t, var_e)
27507{
27508 find interpretation(problem,interpretation);
27509 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27510 find mustInstanceOfEntry_class(problem,interpretation,var_e);
27511 // t is exported
27512 // e is exported
27513 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e);
27514}
27515// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry
27516private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(
27517 problem:LogicProblem, interpretation:PartialInterpretation,
27518 var_e)
27519{
27520 find interpretation(problem,interpretation);
27521 find mustInstanceOfEntry_class(problem,interpretation,var_e);
27522 // e is exported
27523 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1);
27524}
27525private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(
27526 problem:LogicProblem, interpretation:PartialInterpretation,
27527 var_e)
27528{
27529 find interpretation(problem,interpretation);
27530 find mayInstanceOfEntry_class(problem,interpretation,var_e);
27531 // e is exported
27532 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1);
27533}
27534private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(
27535 problem:LogicProblem, interpretation:PartialInterpretation,
27536 var_e)
27537{
27538 find interpretation(problem,interpretation);
27539 find mustInstanceOfEntry_class(problem,interpretation,var_e);
27540 // e is exported
27541 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1);
27542}
27543// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry
27544private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(
27545 problem:LogicProblem, interpretation:PartialInterpretation,
27546 var_e, var_t1, var_t2)
27547{
27548 find interpretation(problem,interpretation);
27549 find mustInstanceOfEntry_class(problem,interpretation,var_e);
27550 find mustInstanceOfTransition_class(problem,interpretation,var_t1);
27551 find mustInstanceOfTransition_class(problem,interpretation,var_t2);
27552 // e is exported
27553 // t1 is exported
27554 // t2 is exported
27555 find mustInstanceOfEntry_class(problem,interpretation,var_e);
27556 find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0);
27557 find mustInstanceOfTransition_class(problem,interpretation,var_virtual0);
27558 var_virtual0 == var_t1;
27559 find mustInstanceOfEntry_class(problem,interpretation,var_e);
27560 find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1);
27561 find mustInstanceOfTransition_class(problem,interpretation,var_virtual1);
27562 var_virtual1 == var_t2;
27563 neg find mayEquivalent(problem, interpretation, var_t1, var_t2);
27564}
27565private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(
27566 problem:LogicProblem, interpretation:PartialInterpretation,
27567 var_e, var_t1, var_t2)
27568{
27569 find interpretation(problem,interpretation);
27570 find mayInstanceOfEntry_class(problem,interpretation,var_e);
27571 find mayInstanceOfTransition_class(problem,interpretation,var_t1);
27572 find mayInstanceOfTransition_class(problem,interpretation,var_t2);
27573 // e is exported
27574 // t1 is exported
27575 // t2 is exported
27576 find mayInstanceOfEntry_class(problem,interpretation,var_e);
27577 find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0);
27578 find mayInstanceOfTransition_class(problem,interpretation,var_virtual0);
27579 find mayEquivalent(problem, interpretation, var_virtual0, var_t1);
27580 find mayInstanceOfEntry_class(problem,interpretation,var_e);
27581 find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1);
27582 find mayInstanceOfTransition_class(problem,interpretation,var_virtual1);
27583 find mayEquivalent(problem, interpretation, var_virtual1, var_t2);
27584 var_t1 != var_t2;
27585}
27586private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(
27587 problem:LogicProblem, interpretation:PartialInterpretation,
27588 var_e, var_t1, var_t2)
27589{
27590 find interpretation(problem,interpretation);
27591 find mustInstanceOfEntry_class(problem,interpretation,var_e);
27592 find mustInstanceOfTransition_class(problem,interpretation,var_t1);
27593 find mustInstanceOfTransition_class(problem,interpretation,var_t2);
27594 // e is exported
27595 // t1 is exported
27596 // t2 is exported
27597 find mustInstanceOfEntry_class(problem,interpretation,var_e);
27598 find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0);
27599 find mustInstanceOfTransition_class(problem,interpretation,var_virtual0);
27600 var_virtual0 == var_t1;
27601 find mustInstanceOfEntry_class(problem,interpretation,var_e);
27602 find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1);
27603 find mustInstanceOfTransition_class(problem,interpretation,var_virtual1);
27604 var_virtual1 == var_t2;
27605 var_t1 != var_t2;
27606}
27607// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit
27608private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(
27609 problem:LogicProblem, interpretation:PartialInterpretation,
27610 var_t, var_e)
27611{
27612 find interpretation(problem,interpretation);
27613 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27614 find mustInstanceOfExit_class(problem,interpretation,var_e);
27615 // t is exported
27616 // e is exported
27617 find mustInstanceOfExit_class(problem,interpretation,var_e);
27618 find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0);
27619 find mustInstanceOfTransition_class(problem,interpretation,var_virtual0);
27620 var_virtual0 == var_t;
27621}
27622private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(
27623 problem:LogicProblem, interpretation:PartialInterpretation,
27624 var_t, var_e)
27625{
27626 find interpretation(problem,interpretation);
27627 find mayInstanceOfTransition_class(problem,interpretation,var_t);
27628 find mayInstanceOfExit_class(problem,interpretation,var_e);
27629 // t is exported
27630 // e is exported
27631 find mayInstanceOfExit_class(problem,interpretation,var_e);
27632 find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0);
27633 find mayInstanceOfTransition_class(problem,interpretation,var_virtual0);
27634 find mayEquivalent(problem, interpretation, var_virtual0, var_t);
27635}
27636private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(
27637 problem:LogicProblem, interpretation:PartialInterpretation,
27638 var_t, var_e)
27639{
27640 find interpretation(problem,interpretation);
27641 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27642 find mustInstanceOfExit_class(problem,interpretation,var_e);
27643 // t is exported
27644 // e is exported
27645 find mustInstanceOfExit_class(problem,interpretation,var_e);
27646 find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0);
27647 find mustInstanceOfTransition_class(problem,interpretation,var_virtual0);
27648 var_virtual0 == var_t;
27649}
27650// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal
27651private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(
27652 problem:LogicProblem, interpretation:PartialInterpretation,
27653 var_t, var_f)
27654{
27655 find interpretation(problem,interpretation);
27656 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27657 find mustInstanceOfFinalState_class(problem,interpretation,var_f);
27658 // t is exported
27659 // f is exported
27660 find mustInstanceOfFinalState_class(problem,interpretation,var_f);
27661 find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0);
27662 find mustInstanceOfTransition_class(problem,interpretation,var_virtual0);
27663 var_virtual0 == var_t;
27664}
27665private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(
27666 problem:LogicProblem, interpretation:PartialInterpretation,
27667 var_t, var_f)
27668{
27669 find interpretation(problem,interpretation);
27670 find mayInstanceOfTransition_class(problem,interpretation,var_t);
27671 find mayInstanceOfFinalState_class(problem,interpretation,var_f);
27672 // t is exported
27673 // f is exported
27674 find mayInstanceOfFinalState_class(problem,interpretation,var_f);
27675 find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0);
27676 find mayInstanceOfTransition_class(problem,interpretation,var_virtual0);
27677 find mayEquivalent(problem, interpretation, var_virtual0, var_t);
27678}
27679private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(
27680 problem:LogicProblem, interpretation:PartialInterpretation,
27681 var_t, var_f)
27682{
27683 find interpretation(problem,interpretation);
27684 find mustInstanceOfTransition_class(problem,interpretation,var_t);
27685 find mustInstanceOfFinalState_class(problem,interpretation,var_f);
27686 // t is exported
27687 // f is exported
27688 find mustInstanceOfFinalState_class(problem,interpretation,var_f);
27689 find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0);
27690 find mustInstanceOfTransition_class(problem,interpretation,var_virtual0);
27691 var_virtual0 == var_t;
27692}
27693// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion
27694private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(
27695 problem:LogicProblem, interpretation:PartialInterpretation,
27696 var_region)
27697{
27698 find interpretation(problem,interpretation);
27699 find mustInstanceOfRegion_class(problem,interpretation,var_region);
27700 // region is exported
27701 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0);
27702}
27703private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(
27704 problem:LogicProblem, interpretation:PartialInterpretation,
27705 var_region)
27706{
27707 find interpretation(problem,interpretation);
27708 find mayInstanceOfRegion_class(problem,interpretation,var_region);
27709 // region is exported
27710 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0);
27711}
27712private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(
27713 problem:LogicProblem, interpretation:PartialInterpretation,
27714 var_region)
27715{
27716 find interpretation(problem,interpretation);
27717 find mustInstanceOfRegion_class(problem,interpretation,var_region);
27718 // region is exported
27719 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0);
27720}
27721// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion
27722private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(
27723 problem:LogicProblem, interpretation:PartialInterpretation,
27724 var_region, var_state)
27725{
27726 find interpretation(problem,interpretation);
27727 find mustInstanceOfRegion_class(problem,interpretation,var_region);
27728 find mustInstanceOfState_class(problem,interpretation,var_state);
27729 // region is exported
27730 // state is exported
27731 find mustInstanceOfRegion_class(problem,interpretation,var_region);
27732 find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0);
27733 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
27734 var_virtual0 == var_state;
27735}
27736private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(
27737 problem:LogicProblem, interpretation:PartialInterpretation,
27738 var_region, var_state)
27739{
27740 find interpretation(problem,interpretation);
27741 find mayInstanceOfRegion_class(problem,interpretation,var_region);
27742 find mayInstanceOfState_class(problem,interpretation,var_state);
27743 // region is exported
27744 // state is exported
27745 find mayInstanceOfRegion_class(problem,interpretation,var_region);
27746 find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0);
27747 find mayInstanceOfVertex_class(problem,interpretation,var_virtual0);
27748 find mayEquivalent(problem, interpretation, var_virtual0, var_state);
27749}
27750private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(
27751 problem:LogicProblem, interpretation:PartialInterpretation,
27752 var_region, var_state)
27753{
27754 find interpretation(problem,interpretation);
27755 find mustInstanceOfRegion_class(problem,interpretation,var_region);
27756 find mustInstanceOfState_class(problem,interpretation,var_state);
27757 // region is exported
27758 // state is exported
27759 find mustInstanceOfRegion_class(problem,interpretation,var_region);
27760 find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0);
27761 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
27762 var_virtual0 == var_state;
27763}
27764// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing
27765private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(
27766 problem:LogicProblem, interpretation:PartialInterpretation,
27767 var_c)
27768{
27769 find interpretation(problem,interpretation);
27770 find mustInstanceOfChoice_class(problem,interpretation,var_c);
27771 // c is exported
27772 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1);
27773}
27774private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(
27775 problem:LogicProblem, interpretation:PartialInterpretation,
27776 var_c)
27777{
27778 find interpretation(problem,interpretation);
27779 find mayInstanceOfChoice_class(problem,interpretation,var_c);
27780 // c is exported
27781 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1);
27782}
27783private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(
27784 problem:LogicProblem, interpretation:PartialInterpretation,
27785 var_c)
27786{
27787 find interpretation(problem,interpretation);
27788 find mustInstanceOfChoice_class(problem,interpretation,var_c);
27789 // c is exported
27790 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1);
27791}
27792// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming
27793private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(
27794 problem:LogicProblem, interpretation:PartialInterpretation,
27795 var_c)
27796{
27797 find interpretation(problem,interpretation);
27798 find mustInstanceOfChoice_class(problem,interpretation,var_c);
27799 // c is exported
27800 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c);
27801}
27802private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(
27803 problem:LogicProblem, interpretation:PartialInterpretation,
27804 var_c)
27805{
27806 find interpretation(problem,interpretation);
27807 find mayInstanceOfChoice_class(problem,interpretation,var_c);
27808 // c is exported
27809 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c);
27810}
27811private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(
27812 problem:LogicProblem, interpretation:PartialInterpretation,
27813 var_c)
27814{
27815 find interpretation(problem,interpretation);
27816 find mustInstanceOfChoice_class(problem,interpretation,var_c);
27817 // c is exported
27818 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c);
27819}
27820// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing
27821private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(
27822 problem:LogicProblem, interpretation:PartialInterpretation,
27823 var_s)
27824{
27825 find interpretation(problem,interpretation);
27826 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
27827 // s is exported
27828 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1);
27829}
27830private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(
27831 problem:LogicProblem, interpretation:PartialInterpretation,
27832 var_s)
27833{
27834 find interpretation(problem,interpretation);
27835 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
27836 // s is exported
27837 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1);
27838}
27839private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(
27840 problem:LogicProblem, interpretation:PartialInterpretation,
27841 var_s)
27842{
27843 find interpretation(problem,interpretation);
27844 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
27845 // s is exported
27846 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1);
27847}
27848// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming
27849private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(
27850 problem:LogicProblem, interpretation:PartialInterpretation,
27851 var_s)
27852{
27853 find interpretation(problem,interpretation);
27854 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
27855 // s is exported
27856 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s);
27857}
27858private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(
27859 problem:LogicProblem, interpretation:PartialInterpretation,
27860 var_s)
27861{
27862 find interpretation(problem,interpretation);
27863 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
27864 // s is exported
27865 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s);
27866}
27867private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(
27868 problem:LogicProblem, interpretation:PartialInterpretation,
27869 var_s)
27870{
27871 find interpretation(problem,interpretation);
27872 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
27873 // s is exported
27874 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s);
27875}
27876// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion
27877private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(
27878 problem:LogicProblem, interpretation:PartialInterpretation,
27879 var_s, var_v1, var_v2)
27880{
27881 find interpretation(problem,interpretation);
27882 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
27883 find mustInstanceOfVertex_class(problem,interpretation,var_v1);
27884 find mustInstanceOfVertex_class(problem,interpretation,var_v2);
27885 // s is exported
27886 // v1 is exported
27887 // v2 is exported
27888 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s);
27889 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s);
27890 neg find mayEquivalent(problem, interpretation, var_t1, var_t2);
27891 find mustInstanceOfRegion_class(problem,interpretation,var_r);
27892 find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0);
27893 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
27894 var_virtual0 == var_v1;
27895 find mustInstanceOfRegion_class(problem,interpretation,var_r);
27896 find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1);
27897 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
27898 var_virtual1 == var_v2;
27899}or{
27900 find interpretation(problem,interpretation);
27901 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
27902 find mustInstanceOfVertex_class(problem,interpretation,var_v1);
27903 find mustInstanceOfVertex_class(problem,interpretation,var_v2);
27904 // s is exported
27905 // v1 is exported
27906 // v2 is exported
27907 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1);
27908 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2);
27909 neg find mayEquivalent(problem, interpretation, var_t1, var_t2);
27910 find mustInstanceOfRegion_class(problem,interpretation,var_r);
27911 find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0);
27912 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
27913 var_virtual0 == var_v1;
27914 find mustInstanceOfRegion_class(problem,interpretation,var_r);
27915 find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1);
27916 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
27917 var_virtual1 == var_v2;
27918}
27919private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(
27920 problem:LogicProblem, interpretation:PartialInterpretation,
27921 var_s, var_v1, var_v2)
27922{
27923 find interpretation(problem,interpretation);
27924 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
27925 find mayInstanceOfVertex_class(problem,interpretation,var_v1);
27926 find mayInstanceOfVertex_class(problem,interpretation,var_v2);
27927 // s is exported
27928 // v1 is exported
27929 // v2 is exported
27930 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s);
27931 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s);
27932 var_t1 != var_t2;
27933 find mayInstanceOfRegion_class(problem,interpretation,var_r);
27934 find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0);
27935 find mayInstanceOfVertex_class(problem,interpretation,var_virtual0);
27936 find mayEquivalent(problem, interpretation, var_virtual0, var_v1);
27937 find mayInstanceOfRegion_class(problem,interpretation,var_r);
27938 find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1);
27939 find mayInstanceOfVertex_class(problem,interpretation,var_virtual1);
27940 find mayEquivalent(problem, interpretation, var_virtual1, var_v2);
27941}or{
27942 find interpretation(problem,interpretation);
27943 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
27944 find mayInstanceOfVertex_class(problem,interpretation,var_v1);
27945 find mayInstanceOfVertex_class(problem,interpretation,var_v2);
27946 // s is exported
27947 // v1 is exported
27948 // v2 is exported
27949 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1);
27950 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2);
27951 var_t1 != var_t2;
27952 find mayInstanceOfRegion_class(problem,interpretation,var_r);
27953 find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0);
27954 find mayInstanceOfVertex_class(problem,interpretation,var_virtual0);
27955 find mayEquivalent(problem, interpretation, var_virtual0, var_v1);
27956 find mayInstanceOfRegion_class(problem,interpretation,var_r);
27957 find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1);
27958 find mayInstanceOfVertex_class(problem,interpretation,var_virtual1);
27959 find mayEquivalent(problem, interpretation, var_virtual1, var_v2);
27960}
27961private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(
27962 problem:LogicProblem, interpretation:PartialInterpretation,
27963 var_s, var_v1, var_v2)
27964{
27965 find interpretation(problem,interpretation);
27966 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
27967 find mustInstanceOfVertex_class(problem,interpretation,var_v1);
27968 find mustInstanceOfVertex_class(problem,interpretation,var_v2);
27969 // s is exported
27970 // v1 is exported
27971 // v2 is exported
27972 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s);
27973 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s);
27974 var_t1 != var_t2;
27975 find mustInstanceOfRegion_class(problem,interpretation,var_r);
27976 find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0);
27977 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
27978 var_virtual0 == var_v1;
27979 find mustInstanceOfRegion_class(problem,interpretation,var_r);
27980 find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1);
27981 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
27982 var_virtual1 == var_v2;
27983}or{
27984 find interpretation(problem,interpretation);
27985 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
27986 find mustInstanceOfVertex_class(problem,interpretation,var_v1);
27987 find mustInstanceOfVertex_class(problem,interpretation,var_v2);
27988 // s is exported
27989 // v1 is exported
27990 // v2 is exported
27991 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1);
27992 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2);
27993 var_t1 != var_t2;
27994 find mustInstanceOfRegion_class(problem,interpretation,var_r);
27995 find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0);
27996 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
27997 var_virtual0 == var_v1;
27998 find mustInstanceOfRegion_class(problem,interpretation,var_r);
27999 find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1);
28000 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28001 var_virtual1 == var_v2;
28002}
28003// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates
28004private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(
28005 problem:LogicProblem, interpretation:PartialInterpretation,
28006 var_s)
28007{
28008 find interpretation(problem,interpretation);
28009 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28010 // s is exported
28011 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s);
28012 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s);
28013}
28014private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(
28015 problem:LogicProblem, interpretation:PartialInterpretation,
28016 var_s)
28017{
28018 find interpretation(problem,interpretation);
28019 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
28020 // s is exported
28021 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s);
28022 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s);
28023}
28024private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(
28025 problem:LogicProblem, interpretation:PartialInterpretation,
28026 var_s)
28027{
28028 find interpretation(problem,interpretation);
28029 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28030 // s is exported
28031 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s);
28032 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s);
28033}
28034// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition
28035private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(
28036 problem:LogicProblem, interpretation:PartialInterpretation,
28037 var_v)
28038{
28039 find interpretation(problem,interpretation);
28040 find mustInstanceOfSynchronization_class(problem,interpretation,var_v);
28041 // v is exported
28042 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1);
28043 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2);
28044 neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2);
28045}
28046private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(
28047 problem:LogicProblem, interpretation:PartialInterpretation,
28048 var_v)
28049{
28050 find interpretation(problem,interpretation);
28051 find mayInstanceOfSynchronization_class(problem,interpretation,var_v);
28052 // v is exported
28053 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1);
28054 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2);
28055 var_trg1 != var_trg2;
28056}
28057private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(
28058 problem:LogicProblem, interpretation:PartialInterpretation,
28059 var_v)
28060{
28061 find interpretation(problem,interpretation);
28062 find mustInstanceOfSynchronization_class(problem,interpretation,var_v);
28063 // v is exported
28064 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1);
28065 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2);
28066 var_trg1 != var_trg2;
28067}
28068// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition
28069private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(
28070 problem:LogicProblem, interpretation:PartialInterpretation,
28071 var_v)
28072{
28073 find interpretation(problem,interpretation);
28074 find mustInstanceOfSynchronization_class(problem,interpretation,var_v);
28075 // v is exported
28076 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v);
28077 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v);
28078 neg find mayEquivalent(problem, interpretation, var_src1, var_src2);
28079}
28080private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(
28081 problem:LogicProblem, interpretation:PartialInterpretation,
28082 var_v)
28083{
28084 find interpretation(problem,interpretation);
28085 find mayInstanceOfSynchronization_class(problem,interpretation,var_v);
28086 // v is exported
28087 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v);
28088 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v);
28089 var_src1 != var_src2;
28090}
28091private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(
28092 problem:LogicProblem, interpretation:PartialInterpretation,
28093 var_v)
28094{
28095 find interpretation(problem,interpretation);
28096 find mustInstanceOfSynchronization_class(problem,interpretation,var_v);
28097 // v is exported
28098 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v);
28099 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v);
28100 var_src1 != var_src2;
28101}
28102// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings
28103private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(
28104 problem:LogicProblem, interpretation:PartialInterpretation,
28105 var_s, var_v1, var_v2)
28106{
28107 find interpretation(problem,interpretation);
28108 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28109 find mustInstanceOfVertex_class(problem,interpretation,var_v1);
28110 find mustInstanceOfVertex_class(problem,interpretation,var_v2);
28111 // s is exported
28112 // v1 is exported
28113 // v2 is exported
28114 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s);
28115 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s);
28116 find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1);
28117 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0);
28118 find mustInstanceOfRegion_class(problem,interpretation,var_virtual0);
28119 find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1);
28120 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28121 var_virtual1 == var_v1;
28122 find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2);
28123 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2);
28124 find mustInstanceOfRegion_class(problem,interpretation,var_virtual2);
28125 find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3);
28126 find mustInstanceOfVertex_class(problem,interpretation,var_virtual3);
28127 var_virtual3 == var_v2;
28128 neg find mayEquivalent(problem, interpretation, var_r1, var_r2);
28129}or{
28130 find interpretation(problem,interpretation);
28131 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28132 find mustInstanceOfVertex_class(problem,interpretation,var_v1);
28133 find mustInstanceOfVertex_class(problem,interpretation,var_v2);
28134 // s is exported
28135 // v1 is exported
28136 // v2 is exported
28137 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1);
28138 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2);
28139 find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1);
28140 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0);
28141 find mustInstanceOfRegion_class(problem,interpretation,var_virtual0);
28142 find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1);
28143 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28144 var_virtual1 == var_v1;
28145 find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2);
28146 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2);
28147 find mustInstanceOfRegion_class(problem,interpretation,var_virtual2);
28148 find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3);
28149 find mustInstanceOfVertex_class(problem,interpretation,var_virtual3);
28150 var_virtual3 == var_v2;
28151 neg find mayEquivalent(problem, interpretation, var_r1, var_r2);
28152}
28153private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(
28154 problem:LogicProblem, interpretation:PartialInterpretation,
28155 var_s, var_v1, var_v2)
28156{
28157 find interpretation(problem,interpretation);
28158 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
28159 find mayInstanceOfVertex_class(problem,interpretation,var_v1);
28160 find mayInstanceOfVertex_class(problem,interpretation,var_v2);
28161 // s is exported
28162 // v1 is exported
28163 // v2 is exported
28164 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s);
28165 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s);
28166 find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1);
28167 find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0);
28168 find mayInstanceOfRegion_class(problem,interpretation,var_virtual0);
28169 find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1);
28170 find mayInstanceOfVertex_class(problem,interpretation,var_virtual1);
28171 find mayEquivalent(problem, interpretation, var_virtual1, var_v1);
28172 find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2);
28173 find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2);
28174 find mayInstanceOfRegion_class(problem,interpretation,var_virtual2);
28175 find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3);
28176 find mayInstanceOfVertex_class(problem,interpretation,var_virtual3);
28177 find mayEquivalent(problem, interpretation, var_virtual3, var_v2);
28178 var_r1 != var_r2;
28179}or{
28180 find interpretation(problem,interpretation);
28181 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
28182 find mayInstanceOfVertex_class(problem,interpretation,var_v1);
28183 find mayInstanceOfVertex_class(problem,interpretation,var_v2);
28184 // s is exported
28185 // v1 is exported
28186 // v2 is exported
28187 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1);
28188 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2);
28189 find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1);
28190 find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0);
28191 find mayInstanceOfRegion_class(problem,interpretation,var_virtual0);
28192 find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1);
28193 find mayInstanceOfVertex_class(problem,interpretation,var_virtual1);
28194 find mayEquivalent(problem, interpretation, var_virtual1, var_v1);
28195 find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2);
28196 find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2);
28197 find mayInstanceOfRegion_class(problem,interpretation,var_virtual2);
28198 find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3);
28199 find mayInstanceOfVertex_class(problem,interpretation,var_virtual3);
28200 find mayEquivalent(problem, interpretation, var_virtual3, var_v2);
28201 var_r1 != var_r2;
28202}
28203private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(
28204 problem:LogicProblem, interpretation:PartialInterpretation,
28205 var_s, var_v1, var_v2)
28206{
28207 find interpretation(problem,interpretation);
28208 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28209 find mustInstanceOfVertex_class(problem,interpretation,var_v1);
28210 find mustInstanceOfVertex_class(problem,interpretation,var_v2);
28211 // s is exported
28212 // v1 is exported
28213 // v2 is exported
28214 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s);
28215 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s);
28216 find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1);
28217 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0);
28218 find mustInstanceOfRegion_class(problem,interpretation,var_virtual0);
28219 find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1);
28220 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28221 var_virtual1 == var_v1;
28222 find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2);
28223 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2);
28224 find mustInstanceOfRegion_class(problem,interpretation,var_virtual2);
28225 find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3);
28226 find mustInstanceOfVertex_class(problem,interpretation,var_virtual3);
28227 var_virtual3 == var_v2;
28228 var_r1 != var_r2;
28229}or{
28230 find interpretation(problem,interpretation);
28231 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28232 find mustInstanceOfVertex_class(problem,interpretation,var_v1);
28233 find mustInstanceOfVertex_class(problem,interpretation,var_v2);
28234 // s is exported
28235 // v1 is exported
28236 // v2 is exported
28237 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1);
28238 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2);
28239 find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1);
28240 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0);
28241 find mustInstanceOfRegion_class(problem,interpretation,var_virtual0);
28242 find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1);
28243 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28244 var_virtual1 == var_v1;
28245 find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2);
28246 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2);
28247 find mustInstanceOfRegion_class(problem,interpretation,var_virtual2);
28248 find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3);
28249 find mustInstanceOfVertex_class(problem,interpretation,var_virtual3);
28250 var_virtual3 == var_v2;
28251 var_r1 != var_r2;
28252}
28253// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child
28254private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(
28255 problem:LogicProblem, interpretation:PartialInterpretation,
28256 var_parent, var_child)
28257{
28258 find interpretation(problem,interpretation);
28259 find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent);
28260 find mustInstanceOfVertex_class(problem,interpretation,var_child);
28261 // parent is exported
28262 // child is exported
28263 find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent);
28264 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0);
28265 find mustInstanceOfRegion_class(problem,interpretation,var_virtual0);
28266 find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1);
28267 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28268 var_virtual1 == var_child;
28269}
28270private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(
28271 problem:LogicProblem, interpretation:PartialInterpretation,
28272 var_parent, var_child)
28273{
28274 find interpretation(problem,interpretation);
28275 find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent);
28276 find mayInstanceOfVertex_class(problem,interpretation,var_child);
28277 // parent is exported
28278 // child is exported
28279 find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent);
28280 find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0);
28281 find mayInstanceOfRegion_class(problem,interpretation,var_virtual0);
28282 find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1);
28283 find mayInstanceOfVertex_class(problem,interpretation,var_virtual1);
28284 find mayEquivalent(problem, interpretation, var_virtual1, var_child);
28285}
28286private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(
28287 problem:LogicProblem, interpretation:PartialInterpretation,
28288 var_parent, var_child)
28289{
28290 find interpretation(problem,interpretation);
28291 find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent);
28292 find mustInstanceOfVertex_class(problem,interpretation,var_child);
28293 // parent is exported
28294 // child is exported
28295 find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent);
28296 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0);
28297 find mustInstanceOfRegion_class(problem,interpretation,var_virtual0);
28298 find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1);
28299 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28300 var_virtual1 == var_child;
28301}
28302// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions
28303private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(
28304 problem:LogicProblem, interpretation:PartialInterpretation,
28305 var_s, var_v)
28306{
28307 find interpretation(problem,interpretation);
28308 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28309 find mustInstanceOfVertex_class(problem,interpretation,var_v);
28310 // s is exported
28311 // v is exported
28312 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s);
28313 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v);
28314 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c);
28315}or{
28316 find interpretation(problem,interpretation);
28317 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28318 find mustInstanceOfVertex_class(problem,interpretation,var_v);
28319 // s is exported
28320 // v is exported
28321 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v);
28322 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v);
28323 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c);
28324}
28325private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(
28326 problem:LogicProblem, interpretation:PartialInterpretation,
28327 var_s, var_v)
28328{
28329 find interpretation(problem,interpretation);
28330 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
28331 find mayInstanceOfVertex_class(problem,interpretation,var_v);
28332 // s is exported
28333 // v is exported
28334 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s);
28335 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v);
28336 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c);
28337}or{
28338 find interpretation(problem,interpretation);
28339 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
28340 find mayInstanceOfVertex_class(problem,interpretation,var_v);
28341 // s is exported
28342 // v is exported
28343 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v);
28344 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v);
28345 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c);
28346}
28347private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(
28348 problem:LogicProblem, interpretation:PartialInterpretation,
28349 var_s, var_v)
28350{
28351 find interpretation(problem,interpretation);
28352 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28353 find mustInstanceOfVertex_class(problem,interpretation,var_v);
28354 // s is exported
28355 // v is exported
28356 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s);
28357 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v);
28358 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c);
28359}or{
28360 find interpretation(problem,interpretation);
28361 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28362 find mustInstanceOfVertex_class(problem,interpretation,var_v);
28363 // s is exported
28364 // v is exported
28365 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v);
28366 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v);
28367 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c);
28368}
28369// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions
28370private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(
28371 problem:LogicProblem, interpretation:PartialInterpretation,
28372 var_composite)
28373{
28374 find interpretation(problem,interpretation);
28375 find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite);
28376 // composite is exported
28377 find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite);
28378 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0);
28379 find mustInstanceOfRegion_class(problem,interpretation,var_virtual0);
28380 var_virtual0 == var_region1;
28381 find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite);
28382 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1);
28383 find mustInstanceOfRegion_class(problem,interpretation,var_virtual1);
28384 var_virtual1 == var_region2;
28385 neg find mayEquivalent(problem, interpretation, var_region1, var_region2);
28386}
28387private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(
28388 problem:LogicProblem, interpretation:PartialInterpretation,
28389 var_composite)
28390{
28391 find interpretation(problem,interpretation);
28392 find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite);
28393 // composite is exported
28394 find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite);
28395 find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0);
28396 find mayInstanceOfRegion_class(problem,interpretation,var_virtual0);
28397 find mayEquivalent(problem, interpretation, var_virtual0, var_region1);
28398 find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite);
28399 find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1);
28400 find mayInstanceOfRegion_class(problem,interpretation,var_virtual1);
28401 find mayEquivalent(problem, interpretation, var_virtual1, var_region2);
28402 var_region1 != var_region2;
28403}
28404private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(
28405 problem:LogicProblem, interpretation:PartialInterpretation,
28406 var_composite)
28407{
28408 find interpretation(problem,interpretation);
28409 find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite);
28410 // composite is exported
28411 find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite);
28412 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0);
28413 find mustInstanceOfRegion_class(problem,interpretation,var_virtual0);
28414 var_virtual0 == var_region1;
28415 find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite);
28416 find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1);
28417 find mustInstanceOfRegion_class(problem,interpretation,var_virtual1);
28418 var_virtual1 == var_region2;
28419 var_region1 != var_region2;
28420}
28421// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree
28422private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(
28423 problem:LogicProblem, interpretation:PartialInterpretation,
28424 var_s)
28425{
28426 find interpretation(problem,interpretation);
28427 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28428 // s is exported
28429 find mustInstanceOfTransition_class(problem,interpretation,var_t1);
28430 find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0);
28431 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
28432 var_virtual0 == var_s;
28433 find mustInstanceOfTransition_class(problem,interpretation,var_t2);
28434 find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1);
28435 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28436 var_virtual1 == var_s;
28437 find mustInstanceOfTransition_class(problem,interpretation,var_t3);
28438 find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2);
28439 find mustInstanceOfVertex_class(problem,interpretation,var_virtual2);
28440 var_virtual2 == var_s;
28441 neg find mayEquivalent(problem, interpretation, var_t1, var_t2);
28442 neg find mayEquivalent(problem, interpretation, var_t2, var_t3);
28443 neg find mayEquivalent(problem, interpretation, var_t1, var_t3);
28444}or{
28445 find interpretation(problem,interpretation);
28446 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28447 // s is exported
28448 find mustInstanceOfTransition_class(problem,interpretation,var_t1);
28449 find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0);
28450 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
28451 var_virtual0 == var_s;
28452 find mustInstanceOfTransition_class(problem,interpretation,var_t2);
28453 find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1);
28454 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28455 var_virtual1 == var_s;
28456 find mustInstanceOfTransition_class(problem,interpretation,var_t3);
28457 find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2);
28458 find mustInstanceOfVertex_class(problem,interpretation,var_virtual2);
28459 var_virtual2 == var_s;
28460 neg find mayEquivalent(problem, interpretation, var_t1, var_t2);
28461 neg find mayEquivalent(problem, interpretation, var_t2, var_t3);
28462 neg find mayEquivalent(problem, interpretation, var_t1, var_t3);
28463}
28464private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(
28465 problem:LogicProblem, interpretation:PartialInterpretation,
28466 var_s)
28467{
28468 find interpretation(problem,interpretation);
28469 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
28470 // s is exported
28471 find mayInstanceOfTransition_class(problem,interpretation,var_t1);
28472 find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0);
28473 find mayInstanceOfVertex_class(problem,interpretation,var_virtual0);
28474 find mayEquivalent(problem, interpretation, var_virtual0, var_s);
28475 find mayInstanceOfTransition_class(problem,interpretation,var_t2);
28476 find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1);
28477 find mayInstanceOfVertex_class(problem,interpretation,var_virtual1);
28478 find mayEquivalent(problem, interpretation, var_virtual1, var_s);
28479 find mayInstanceOfTransition_class(problem,interpretation,var_t3);
28480 find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2);
28481 find mayInstanceOfVertex_class(problem,interpretation,var_virtual2);
28482 find mayEquivalent(problem, interpretation, var_virtual2, var_s);
28483 var_t1 != var_t2;
28484 var_t2 != var_t3;
28485 var_t1 != var_t3;
28486}or{
28487 find interpretation(problem,interpretation);
28488 find mayInstanceOfSynchronization_class(problem,interpretation,var_s);
28489 // s is exported
28490 find mayInstanceOfTransition_class(problem,interpretation,var_t1);
28491 find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0);
28492 find mayInstanceOfVertex_class(problem,interpretation,var_virtual0);
28493 find mayEquivalent(problem, interpretation, var_virtual0, var_s);
28494 find mayInstanceOfTransition_class(problem,interpretation,var_t2);
28495 find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1);
28496 find mayInstanceOfVertex_class(problem,interpretation,var_virtual1);
28497 find mayEquivalent(problem, interpretation, var_virtual1, var_s);
28498 find mayInstanceOfTransition_class(problem,interpretation,var_t3);
28499 find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2);
28500 find mayInstanceOfVertex_class(problem,interpretation,var_virtual2);
28501 find mayEquivalent(problem, interpretation, var_virtual2, var_s);
28502 var_t1 != var_t2;
28503 var_t2 != var_t3;
28504 var_t1 != var_t3;
28505}
28506private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(
28507 problem:LogicProblem, interpretation:PartialInterpretation,
28508 var_s)
28509{
28510 find interpretation(problem,interpretation);
28511 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28512 // s is exported
28513 find mustInstanceOfTransition_class(problem,interpretation,var_t1);
28514 find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0);
28515 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
28516 var_virtual0 == var_s;
28517 find mustInstanceOfTransition_class(problem,interpretation,var_t2);
28518 find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1);
28519 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28520 var_virtual1 == var_s;
28521 find mustInstanceOfTransition_class(problem,interpretation,var_t3);
28522 find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2);
28523 find mustInstanceOfVertex_class(problem,interpretation,var_virtual2);
28524 var_virtual2 == var_s;
28525 var_t1 != var_t2;
28526 var_t2 != var_t3;
28527 var_t1 != var_t3;
28528}or{
28529 find interpretation(problem,interpretation);
28530 find mustInstanceOfSynchronization_class(problem,interpretation,var_s);
28531 // s is exported
28532 find mustInstanceOfTransition_class(problem,interpretation,var_t1);
28533 find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0);
28534 find mustInstanceOfVertex_class(problem,interpretation,var_virtual0);
28535 var_virtual0 == var_s;
28536 find mustInstanceOfTransition_class(problem,interpretation,var_t2);
28537 find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1);
28538 find mustInstanceOfVertex_class(problem,interpretation,var_virtual1);
28539 var_virtual1 == var_s;
28540 find mustInstanceOfTransition_class(problem,interpretation,var_t3);
28541 find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2);
28542 find mustInstanceOfVertex_class(problem,interpretation,var_virtual2);
28543 var_virtual2 == var_s;
28544 var_t1 != var_t2;
28545 var_t2 != var_t3;
28546 var_t1 != var_t3;
28547}
28548// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch
28549private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(
28550 problem:LogicProblem, interpretation:PartialInterpretation,
28551 var_s1, var_s2)
28552{
28553 find interpretation(problem,interpretation);
28554 find mustInstanceOfSynchronization_class(problem,interpretation,var_s1);
28555 find mustInstanceOfSynchronization_class(problem,interpretation,var_s2);
28556 // s1 is exported
28557 // s2 is exported
28558 find mustInstanceOfSynchronization_class(problem,interpretation,var_s1);
28559 find mustInstanceOfSynchronization_class(problem,interpretation,var_s2);
28560 neg find mayEquivalent(problem, interpretation, var_s1, var_s2);
28561}
28562private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(
28563 problem:LogicProblem, interpretation:PartialInterpretation,
28564 var_s1, var_s2)
28565{
28566 find interpretation(problem,interpretation);
28567 find mayInstanceOfSynchronization_class(problem,interpretation,var_s1);
28568 find mayInstanceOfSynchronization_class(problem,interpretation,var_s2);
28569 // s1 is exported
28570 // s2 is exported
28571 find mayInstanceOfSynchronization_class(problem,interpretation,var_s1);
28572 find mayInstanceOfSynchronization_class(problem,interpretation,var_s2);
28573 var_s1 != var_s2;
28574}
28575private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(
28576 problem:LogicProblem, interpretation:PartialInterpretation,
28577 var_s1, var_s2)
28578{
28579 find interpretation(problem,interpretation);
28580 find mustInstanceOfSynchronization_class(problem,interpretation,var_s1);
28581 find mustInstanceOfSynchronization_class(problem,interpretation,var_s2);
28582 // s1 is exported
28583 // s2 is exported
28584 find mustInstanceOfSynchronization_class(problem,interpretation,var_s1);
28585 find mustInstanceOfSynchronization_class(problem,interpretation,var_s2);
28586 var_s1 != var_s2;
28587}
28588
28589//////////
28590// 1.4 Containment Indexer
28591//////////
28592private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
28593 find mustContains4(_,_,source,target);
28594}
28595
28596private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
28597 source: DefinedElement, target: DefinedElement)
28598 { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or
28599
28600 { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or
28601
28602 { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); }
28603
28604private pattern mustTransitiveContains(source,target) {
28605 find mustContains2+(source,target);
28606}
28607
28608//////////
28609// 2. Invalidation Indexers
28610//////////
28611// 2.1 Invalidated by WF Queries
28612//////////
28613pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation,
28614 var_r1)
28615{
28616 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1);
28617}
28618pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation,
28619 var_r)
28620{
28621 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r);
28622}
28623pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation,
28624 var_t, var_e)
28625{
28626 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e);
28627}
28628pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation,
28629 var_e)
28630{
28631 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e);
28632}
28633pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation,
28634 var_e, var_t1, var_t2)
28635{
28636 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2);
28637}
28638pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation,
28639 var_t, var_e)
28640{
28641 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e);
28642}
28643pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation,
28644 var_t, var_f)
28645{
28646 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f);
28647}
28648pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation,
28649 var_region)
28650{
28651 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region);
28652}
28653pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation,
28654 var_c)
28655{
28656 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c);
28657}
28658pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation,
28659 var_c)
28660{
28661 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c);
28662}
28663pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation,
28664 var_s)
28665{
28666 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s);
28667}
28668pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation,
28669 var_s)
28670{
28671 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s);
28672}
28673pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation,
28674 var_s, var_v1, var_v2)
28675{
28676 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2);
28677}
28678pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation,
28679 var_s)
28680{
28681 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s);
28682}
28683pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation,
28684 var_s, var_v1, var_v2)
28685{
28686 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2);
28687}
28688pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation,
28689 var_s, var_v)
28690{
28691 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v);
28692}
28693pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation,
28694 var_s)
28695{
28696 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s);
28697}
28698pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation,
28699 var_s1, var_s2)
28700{
28701 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2);
28702}
28703
28704//////////
28705// 3. Unfinishedness Indexers
28706//////////
28707// 3.1 Unfinishedness Measured by Multiplicity
28708//////////
28709pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
28710 find interpretation(problem,interpretation);
28711 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28712 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition");
28713 find mustInstanceOfTransition_class(problem,interpretation,object);
28714 numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_);
28715 check(numberOfExistingReferences < 1);
28716 missingMultiplicity == eval(1-numberOfExistingReferences);
28717}
28718
28719//////////
28720// 3.2 Unfinishedness Measured by WF Queries
28721//////////
28722pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation,
28723 var_r1)
28724{
28725 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1);
28726}
28727pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation,
28728 var_r)
28729{
28730 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r);
28731}
28732pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation,
28733 var_t, var_e)
28734{
28735 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e);
28736}
28737pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation,
28738 var_e)
28739{
28740 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e);
28741}
28742pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation,
28743 var_e, var_t1, var_t2)
28744{
28745 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2);
28746}
28747pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation,
28748 var_t, var_e)
28749{
28750 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e);
28751}
28752pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation,
28753 var_t, var_f)
28754{
28755 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f);
28756}
28757pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation,
28758 var_region)
28759{
28760 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region);
28761}
28762pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation,
28763 var_c)
28764{
28765 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c);
28766}
28767pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation,
28768 var_c)
28769{
28770 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c);
28771}
28772pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation,
28773 var_s)
28774{
28775 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s);
28776}
28777pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation,
28778 var_s)
28779{
28780 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s);
28781}
28782pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation,
28783 var_s, var_v1, var_v2)
28784{
28785 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2);
28786}
28787pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation,
28788 var_s)
28789{
28790 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s);
28791}
28792pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation,
28793 var_s, var_v1, var_v2)
28794{
28795 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2);
28796}
28797pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation,
28798 var_s, var_v)
28799{
28800 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v);
28801}
28802pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation,
28803 var_s)
28804{
28805 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s);
28806}
28807pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation,
28808 var_s1, var_s2)
28809{
28810 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2);
28811}
28812
28813//////////
28814// 4. Refinement Indexers
28815//////////
28816// 4.1 Object constructors
28817//////////
28818private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
28819{
28820 find interpretation(problem,interpretation);
28821 find mustInstanceOfState_class(problem,interpretation,root);
28822 find mustExist(problem, interpretation, root);
28823}or{
28824 find interpretation(problem,interpretation);
28825 find mustInstanceOfRegion_class(problem,interpretation,root);
28826 find mustExist(problem, interpretation, root);
28827}or{
28828 find interpretation(problem,interpretation);
28829 find mustInstanceOfStatechart_class(problem,interpretation,root);
28830 find mustExist(problem, interpretation, root);
28831}or{
28832 find interpretation(problem,interpretation);
28833 find mustInstanceOfSynchronization_class(problem,interpretation,root);
28834 find mustExist(problem, interpretation, root);
28835}or{
28836 find interpretation(problem,interpretation);
28837 find mustInstanceOfChoice_class(problem,interpretation,root);
28838 find mustExist(problem, interpretation, root);
28839}or{
28840 find interpretation(problem,interpretation);
28841 find mustInstanceOfVertex_class(problem,interpretation,root);
28842 find mustExist(problem, interpretation, root);
28843}or{
28844 find interpretation(problem,interpretation);
28845 find mustInstanceOfRegularState_class(problem,interpretation,root);
28846 find mustExist(problem, interpretation, root);
28847}or{
28848 find interpretation(problem,interpretation);
28849 find mustInstanceOfEntry_class(problem,interpretation,root);
28850 find mustExist(problem, interpretation, root);
28851}or{
28852 find interpretation(problem,interpretation);
28853 find mustInstanceOfPseudostate_class(problem,interpretation,root);
28854 find mustExist(problem, interpretation, root);
28855}or{
28856 find interpretation(problem,interpretation);
28857 find mustInstanceOfFinalState_class(problem,interpretation,root);
28858 find mustExist(problem, interpretation, root);
28859}or{
28860 find interpretation(problem,interpretation);
28861 find mustInstanceOfExit_class(problem,interpretation,root);
28862 find mustExist(problem, interpretation, root);
28863}or{
28864 find interpretation(problem,interpretation);
28865 find mustInstanceOfTransition_class(problem,interpretation,root);
28866 find mustExist(problem, interpretation, root);
28867}or{
28868 find interpretation(problem,interpretation);
28869 find mustInstanceOfCompositeElement_class(problem,interpretation,root);
28870 find mustExist(problem, interpretation, root);
28871}or{
28872 find interpretation(problem,interpretation);
28873 find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root);
28874 find mustExist(problem, interpretation, root);
28875}or{
28876 find interpretation(problem,interpretation);
28877 find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root);
28878 find mustExist(problem, interpretation, root);
28879}or{
28880 find interpretation(problem,interpretation);
28881 find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root);
28882 find mustExist(problem, interpretation, root);
28883}or{
28884 find interpretation(problem,interpretation);
28885 find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root);
28886 find mustExist(problem, interpretation, root);
28887}
28888pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition(
28889 problem:LogicProblem, interpretation:PartialInterpretation,
28890 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
28891 container:DefinedElement)
28892{
28893 find interpretation(problem,interpretation);
28894 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
28895 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class");
28896 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
28897 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex");
28898 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
28899 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition");
28900 find mustInstanceOfVertex_class(problem,interpretation,container);
28901 find mayInstanceOfTransition_class(problem,interpretation,newObject);
28902 find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject);
28903 find mustExist(problem, interpretation, container);
28904 neg find mustExist(problem, interpretation, newObject);
28905}
28906pattern createObject_Transition_class(
28907 problem:LogicProblem, interpretation:PartialInterpretation,
28908 typeInterpretation:PartialComplexTypeInterpretation)
28909{
28910 find interpretation(problem,interpretation);
28911 neg find hasElementInContainment(problem,interpretation);
28912 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
28913 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class");
28914 find mayInstanceOfTransition_class(problem,interpretation,newObject);
28915 find mayExist(problem, interpretation, newObject);
28916 neg find mustExist(problem, interpretation, newObject);
28917}
28918pattern createObject_Entry_class_by_vertices_reference_Region(
28919 problem:LogicProblem, interpretation:PartialInterpretation,
28920 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
28921 container:DefinedElement)
28922{
28923 find interpretation(problem,interpretation);
28924 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
28925 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class");
28926 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
28927 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
28928 find mustInstanceOfRegion_class(problem,interpretation,container);
28929 find mayInstanceOfEntry_class(problem,interpretation,newObject);
28930 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
28931 find mustExist(problem, interpretation, container);
28932 neg find mustExist(problem, interpretation, newObject);
28933}
28934pattern createObject_Entry_class(
28935 problem:LogicProblem, interpretation:PartialInterpretation,
28936 typeInterpretation:PartialComplexTypeInterpretation)
28937{
28938 find interpretation(problem,interpretation);
28939 neg find hasElementInContainment(problem,interpretation);
28940 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
28941 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class");
28942 find mayInstanceOfEntry_class(problem,interpretation,newObject);
28943 find mayExist(problem, interpretation, newObject);
28944 neg find mustExist(problem, interpretation, newObject);
28945}
28946pattern createObject_Region_class_by_regions_reference_CompositeElement(
28947 problem:LogicProblem, interpretation:PartialInterpretation,
28948 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
28949 container:DefinedElement)
28950{
28951 find interpretation(problem,interpretation);
28952 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
28953 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class");
28954 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
28955 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement");
28956 find mustInstanceOfCompositeElement_class(problem,interpretation,container);
28957 find mayInstanceOfRegion_class(problem,interpretation,newObject);
28958 find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject);
28959 find mustExist(problem, interpretation, container);
28960 neg find mustExist(problem, interpretation, newObject);
28961}
28962pattern createObject_Region_class(
28963 problem:LogicProblem, interpretation:PartialInterpretation,
28964 typeInterpretation:PartialComplexTypeInterpretation)
28965{
28966 find interpretation(problem,interpretation);
28967 neg find hasElementInContainment(problem,interpretation);
28968 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
28969 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class");
28970 find mayInstanceOfRegion_class(problem,interpretation,newObject);
28971 find mayExist(problem, interpretation, newObject);
28972 neg find mustExist(problem, interpretation, newObject);
28973}
28974pattern createObject_Choice_class_by_vertices_reference_Region(
28975 problem:LogicProblem, interpretation:PartialInterpretation,
28976 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
28977 container:DefinedElement)
28978{
28979 find interpretation(problem,interpretation);
28980 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
28981 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class");
28982 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
28983 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
28984 find mustInstanceOfRegion_class(problem,interpretation,container);
28985 find mayInstanceOfChoice_class(problem,interpretation,newObject);
28986 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
28987 find mustExist(problem, interpretation, container);
28988 neg find mustExist(problem, interpretation, newObject);
28989}
28990pattern createObject_Choice_class(
28991 problem:LogicProblem, interpretation:PartialInterpretation,
28992 typeInterpretation:PartialComplexTypeInterpretation)
28993{
28994 find interpretation(problem,interpretation);
28995 neg find hasElementInContainment(problem,interpretation);
28996 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
28997 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class");
28998 find mayInstanceOfChoice_class(problem,interpretation,newObject);
28999 find mayExist(problem, interpretation, newObject);
29000 neg find mustExist(problem, interpretation, newObject);
29001}
29002pattern createObject_Synchronization_class_by_vertices_reference_Region(
29003 problem:LogicProblem, interpretation:PartialInterpretation,
29004 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
29005 container:DefinedElement)
29006{
29007 find interpretation(problem,interpretation);
29008 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
29009 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class");
29010 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
29011 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
29012 find mustInstanceOfRegion_class(problem,interpretation,container);
29013 find mayInstanceOfSynchronization_class(problem,interpretation,newObject);
29014 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
29015 find mustExist(problem, interpretation, container);
29016 neg find mustExist(problem, interpretation, newObject);
29017}
29018pattern createObject_Synchronization_class(
29019 problem:LogicProblem, interpretation:PartialInterpretation,
29020 typeInterpretation:PartialComplexTypeInterpretation)
29021{
29022 find interpretation(problem,interpretation);
29023 neg find hasElementInContainment(problem,interpretation);
29024 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
29025 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class");
29026 find mayInstanceOfSynchronization_class(problem,interpretation,newObject);
29027 find mayExist(problem, interpretation, newObject);
29028 neg find mustExist(problem, interpretation, newObject);
29029}
29030pattern createObject_Statechart_class_UndefinedPart(
29031 problem:LogicProblem, interpretation:PartialInterpretation,
29032 typeInterpretation:PartialComplexTypeInterpretation)
29033{
29034 find interpretation(problem,interpretation);
29035 neg find hasElementInContainment(problem,interpretation);
29036 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
29037 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart");
29038 find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject);
29039 find mayExist(problem, interpretation, newObject);
29040 neg find mustExist(problem, interpretation, newObject);
29041}
29042pattern createObject_State_class_by_vertices_reference_Region(
29043 problem:LogicProblem, interpretation:PartialInterpretation,
29044 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
29045 container:DefinedElement)
29046{
29047 find interpretation(problem,interpretation);
29048 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
29049 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class");
29050 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
29051 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
29052 find mustInstanceOfRegion_class(problem,interpretation,container);
29053 find mayInstanceOfState_class(problem,interpretation,newObject);
29054 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
29055 find mustExist(problem, interpretation, container);
29056 neg find mustExist(problem, interpretation, newObject);
29057}
29058pattern createObject_State_class(
29059 problem:LogicProblem, interpretation:PartialInterpretation,
29060 typeInterpretation:PartialComplexTypeInterpretation)
29061{
29062 find interpretation(problem,interpretation);
29063 neg find hasElementInContainment(problem,interpretation);
29064 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
29065 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class");
29066 find mayInstanceOfState_class(problem,interpretation,newObject);
29067 find mayExist(problem, interpretation, newObject);
29068 neg find mustExist(problem, interpretation, newObject);
29069}
29070pattern createObject_Exit_class_by_vertices_reference_Region(
29071 problem:LogicProblem, interpretation:PartialInterpretation,
29072 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
29073 container:DefinedElement)
29074{
29075 find interpretation(problem,interpretation);
29076 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
29077 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class");
29078 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
29079 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
29080 find mustInstanceOfRegion_class(problem,interpretation,container);
29081 find mayInstanceOfExit_class(problem,interpretation,newObject);
29082 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
29083 find mustExist(problem, interpretation, container);
29084 neg find mustExist(problem, interpretation, newObject);
29085}
29086pattern createObject_Exit_class(
29087 problem:LogicProblem, interpretation:PartialInterpretation,
29088 typeInterpretation:PartialComplexTypeInterpretation)
29089{
29090 find interpretation(problem,interpretation);
29091 neg find hasElementInContainment(problem,interpretation);
29092 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
29093 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class");
29094 find mayInstanceOfExit_class(problem,interpretation,newObject);
29095 find mayExist(problem, interpretation, newObject);
29096 neg find mustExist(problem, interpretation, newObject);
29097}
29098pattern createObject_FinalState_class_by_vertices_reference_Region(
29099 problem:LogicProblem, interpretation:PartialInterpretation,
29100 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
29101 container:DefinedElement)
29102{
29103 find interpretation(problem,interpretation);
29104 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
29105 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class");
29106 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
29107 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
29108 find mustInstanceOfRegion_class(problem,interpretation,container);
29109 find mayInstanceOfFinalState_class(problem,interpretation,newObject);
29110 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
29111 find mustExist(problem, interpretation, container);
29112 neg find mustExist(problem, interpretation, newObject);
29113}
29114pattern createObject_FinalState_class(
29115 problem:LogicProblem, interpretation:PartialInterpretation,
29116 typeInterpretation:PartialComplexTypeInterpretation)
29117{
29118 find interpretation(problem,interpretation);
29119 neg find hasElementInContainment(problem,interpretation);
29120 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
29121 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class");
29122 find mayInstanceOfFinalState_class(problem,interpretation,newObject);
29123 find mayExist(problem, interpretation, newObject);
29124 neg find mustExist(problem, interpretation, newObject);
29125}
29126
29127//////////
29128// 4.2 Type refinement
29129//////////
29130pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
29131 find interpretation(problem,interpretation);
29132 PartialInterpretation.newElements(interpretation,element);
29133 find mayInstanceOfTransition_class(problem,interpretation,element);
29134 neg find mustInstanceOfTransition_class(problem,interpretation,element);
29135 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
29136 neg find mustInstanceOfRegion_class(problem,interpretation,element);
29137 neg find mustInstanceOfVertex_class(problem,interpretation,element);
29138}
29139pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
29140 find interpretation(problem,interpretation);
29141 PartialInterpretation.newElements(interpretation,element);
29142 find mayInstanceOfEntry_class(problem,interpretation,element);
29143 neg find mustInstanceOfTransition_class(problem,interpretation,element);
29144 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
29145 neg find mustInstanceOfEntry_class(problem,interpretation,element);
29146 neg find mustInstanceOfRegion_class(problem,interpretation,element);
29147 neg find mustInstanceOfChoice_class(problem,interpretation,element);
29148 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
29149 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
29150 neg find mustInstanceOfExit_class(problem,interpretation,element);
29151}
29152pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
29153 find interpretation(problem,interpretation);
29154 PartialInterpretation.newElements(interpretation,element);
29155 find mayInstanceOfRegion_class(problem,interpretation,element);
29156 neg find mustInstanceOfTransition_class(problem,interpretation,element);
29157 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
29158 neg find mustInstanceOfRegion_class(problem,interpretation,element);
29159 neg find mustInstanceOfVertex_class(problem,interpretation,element);
29160}
29161pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
29162 find interpretation(problem,interpretation);
29163 PartialInterpretation.newElements(interpretation,element);
29164 find mayInstanceOfChoice_class(problem,interpretation,element);
29165 neg find mustInstanceOfTransition_class(problem,interpretation,element);
29166 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
29167 neg find mustInstanceOfEntry_class(problem,interpretation,element);
29168 neg find mustInstanceOfRegion_class(problem,interpretation,element);
29169 neg find mustInstanceOfChoice_class(problem,interpretation,element);
29170 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
29171 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
29172 neg find mustInstanceOfExit_class(problem,interpretation,element);
29173}
29174pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
29175 find interpretation(problem,interpretation);
29176 PartialInterpretation.newElements(interpretation,element);
29177 find mayInstanceOfSynchronization_class(problem,interpretation,element);
29178 neg find mustInstanceOfTransition_class(problem,interpretation,element);
29179 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
29180 neg find mustInstanceOfEntry_class(problem,interpretation,element);
29181 neg find mustInstanceOfRegion_class(problem,interpretation,element);
29182 neg find mustInstanceOfChoice_class(problem,interpretation,element);
29183 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
29184 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
29185 neg find mustInstanceOfExit_class(problem,interpretation,element);
29186}
29187pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
29188 find interpretation(problem,interpretation);
29189 PartialInterpretation.newElements(interpretation,element);
29190 find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element);
29191 neg find mustInstanceOfTransition_class(problem,interpretation,element);
29192 neg find mustInstanceOfRegion_class(problem,interpretation,element);
29193 neg find mustInstanceOfVertex_class(problem,interpretation,element);
29194 neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element);
29195}
29196pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
29197 find interpretation(problem,interpretation);
29198 PartialInterpretation.newElements(interpretation,element);
29199 find mayInstanceOfState_class(problem,interpretation,element);
29200 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
29201 neg find mustInstanceOfTransition_class(problem,interpretation,element);
29202 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
29203 neg find mustInstanceOfRegion_class(problem,interpretation,element);
29204 neg find mustInstanceOfState_class(problem,interpretation,element);
29205 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
29206}
29207pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
29208 find interpretation(problem,interpretation);
29209 PartialInterpretation.newElements(interpretation,element);
29210 find mayInstanceOfExit_class(problem,interpretation,element);
29211 neg find mustInstanceOfTransition_class(problem,interpretation,element);
29212 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
29213 neg find mustInstanceOfEntry_class(problem,interpretation,element);
29214 neg find mustInstanceOfRegion_class(problem,interpretation,element);
29215 neg find mustInstanceOfChoice_class(problem,interpretation,element);
29216 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
29217 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
29218 neg find mustInstanceOfExit_class(problem,interpretation,element);
29219}
29220pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
29221 find interpretation(problem,interpretation);
29222 PartialInterpretation.newElements(interpretation,element);
29223 find mayInstanceOfFinalState_class(problem,interpretation,element);
29224 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
29225 neg find mustInstanceOfTransition_class(problem,interpretation,element);
29226 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
29227 neg find mustInstanceOfRegion_class(problem,interpretation,element);
29228 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
29229}
29230
29231//////////
29232// 4.3 Relation refinement
29233//////////
29234pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition(
29235 problem:LogicProblem, interpretation:PartialInterpretation,
29236 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
29237 from: DefinedElement, to: DefinedElement)
29238{
29239 find interpretation(problem,interpretation);
29240 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29241 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex");
29242 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
29243 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition");
29244 find mustExist(problem, interpretation, from);
29245 find mustExist(problem, interpretation, to);
29246 find mustInstanceOfVertex_class(problem,interpretation,from);
29247 find mustInstanceOfTransition_class(problem,interpretation,to);
29248 find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to);
29249 neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to);
29250}
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 2079fe25..3696f838 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
@@ -1402,7 +1402,7 @@
1402 </value> 1402 </value>
1403 </relations> 1403 </relations>
1404 <elements name="o 1" definedInType="//@types.13 //@types.15"/> 1404 <elements name="o 1" definedInType="//@types.13 //@types.15"/>
1405 <containmentHierarchies typesOrderedInHierarchy="//@types.7 //@types.6 //@types.2 //@types.8 //@types.0 //@types.1 //@types.4 //@types.5 //@types.3 //@types.10 //@types.11 //@types.9 //@types.12 //@types.13 //@types.14 //@types.15 //@types.16" containmentRelations="//@relations.1 //@relations.2 //@relations.5"/> 1405 <containmentHierarchies typesOrderedInHierarchy="//@types.7 //@types.2 //@types.4 //@types.6 //@types.10 //@types.1 //@types.8 //@types.5 //@types.0 //@types.12 //@types.11 //@types.3 //@types.9 //@types.13 //@types.14 //@types.15 //@types.16" containmentRelations="//@relations.1 //@relations.2 //@relations.5"/>
1406 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.0" relation="//@relations.3" lower="1"/> 1406 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.0" relation="//@relations.3" lower="1"/>
1407 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.1" relation="//@relations.3" upper="1"/> 1407 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.1" relation="//@relations.3" upper="1"/>
1408 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.4" upper="1"/> 1408 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.4" upper="1"/>
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 977a3efc..8d1daafe 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, 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 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 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 897aa2d4..2b44b530 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
@@ -12790,3 +12790,833 @@ graph
12790 ] 12790 ]
12791 ] 12791 ]
12792] 12792]
12793graph
12794[
12795 node
12796 [
12797 id 0
12798 graphics
12799 [
12800 w 277.20000000000005
12801 h 82
12802 type "rectangle"
12803 fill "#FFFFFF"
12804 fill2 "#FFFFFF"
12805 outline "#000000"
12806 ]
12807 LabelGraphics
12808 [
12809 text "o 1"
12810 outline "#000000"
12811 fill "#FFFFFF"
12812 fontSize 16
12813 fontName "Monospace"
12814 autoSizePolicy "node_width"
12815 anchor "t"
12816 borderDistance 0.0
12817 ]
12818 LabelGraphics
12819 [
12820 text "
12821 Statechart class DefinedPart
12822 CompositeElement class DefinedPart
12823 Statechart class
12824 CompositeElement class
12825 "
12826 fontSize 14
12827 fontName "Consolas"
12828 alignment "left"
12829 anchor "tl"
12830 borderDistance 6
12831 ]
12832 ]
12833
12834 node
12835 [
12836 id 1
12837 graphics
12838 [
12839 w 41.800000000000004
12840 h 26
12841 type "rectangle"
12842 fill "#FFFFFF"
12843 fill2 "#FFFFFF"
12844 outline "#000000"
12845 ]
12846 LabelGraphics
12847 [
12848 text "true"
12849 outline "#000000"
12850 fill "#FFFFFF"
12851 fontSize 16
12852 fontName "Monospace"
12853 autoSizePolicy "node_width"
12854 anchor "t"
12855 borderDistance 0.0
12856 ]
12857 LabelGraphics
12858 [
12859 text "
12860 "
12861 fontSize 14
12862 fontName "Consolas"
12863 alignment "left"
12864 anchor "tl"
12865 borderDistance 6
12866 ]
12867 ]
12868
12869 node
12870 [
12871 id 2
12872 graphics
12873 [
12874 w 50.6
12875 h 26
12876 type "rectangle"
12877 fill "#FFFFFF"
12878 fill2 "#FFFFFF"
12879 outline "#000000"
12880 ]
12881 LabelGraphics
12882 [
12883 text "false"
12884 outline "#000000"
12885 fill "#FFFFFF"
12886 fontSize 16
12887 fontName "Monospace"
12888 autoSizePolicy "node_width"
12889 anchor "t"
12890 borderDistance 0.0
12891 ]
12892 LabelGraphics
12893 [
12894 text "
12895 "
12896 fontSize 14
12897 fontName "Consolas"
12898 alignment "left"
12899 anchor "tl"
12900 borderDistance 6
12901 ]
12902 ]
12903
12904 node
12905 [
12906 id 3
12907 graphics
12908 [
12909 w 107.80000000000001
12910 h 40
12911 type "rectangle"
12912 fill "#FFFFFF"
12913 fill2 "#FFFFFF"
12914 outline "#000000"
12915 ]
12916 LabelGraphics
12917 [
12918 text "null"
12919 outline "#000000"
12920 fill "#FFFFFF"
12921 fontSize 16
12922 fontName "Monospace"
12923 autoSizePolicy "node_width"
12924 anchor "t"
12925 borderDistance 0.0
12926 ]
12927 LabelGraphics
12928 [
12929 text "
12930 Region class
12931 "
12932 fontSize 14
12933 fontName "Consolas"
12934 alignment "left"
12935 anchor "tl"
12936 borderDistance 6
12937 ]
12938 ]
12939
12940 node
12941 [
12942 id 4
12943 graphics
12944 [
12945 w 154.0
12946 h 68
12947 type "rectangle"
12948 fill "#FFFFFF"
12949 fill2 "#FFFFFF"
12950 outline "#000000"
12951 ]
12952 LabelGraphics
12953 [
12954 text "null"
12955 outline "#000000"
12956 fill "#FFFFFF"
12957 fontSize 16
12958 fontName "Monospace"
12959 autoSizePolicy "node_width"
12960 anchor "t"
12961 borderDistance 0.0
12962 ]
12963 LabelGraphics
12964 [
12965 text "
12966 Vertex class
12967 RegularState class
12968 FinalState class
12969 "
12970 fontSize 14
12971 fontName "Consolas"
12972 alignment "left"
12973 anchor "tl"
12974 borderDistance 6
12975 ]
12976 ]
12977
12978 node
12979 [
12980 id 5
12981 graphics
12982 [
12983 w 146.3
12984 h 68
12985 type "rectangle"
12986 fill "#FFFFFF"
12987 fill2 "#FFFFFF"
12988 outline "#000000"
12989 ]
12990 LabelGraphics
12991 [
12992 text "null"
12993 outline "#000000"
12994 fill "#FFFFFF"
12995 fontSize 16
12996 fontName "Monospace"
12997 autoSizePolicy "node_width"
12998 anchor "t"
12999 borderDistance 0.0
13000 ]
13001 LabelGraphics
13002 [
13003 text "
13004 Pseudostate class
13005 Vertex class
13006 Entry class
13007 "
13008 fontSize 14
13009 fontName "Consolas"
13010 alignment "left"
13011 anchor "tl"
13012 borderDistance 6
13013 ]
13014 ]
13015
13016 node
13017 [
13018 id 6
13019 graphics
13020 [
13021 w 154.0
13022 h 68
13023 type "rectangle"
13024 fill "#FFFFFF"
13025 fill2 "#FFFFFF"
13026 outline "#000000"
13027 ]
13028 LabelGraphics
13029 [
13030 text "null"
13031 outline "#000000"
13032 fill "#FFFFFF"
13033 fontSize 16
13034 fontName "Monospace"
13035 autoSizePolicy "node_width"
13036 anchor "t"
13037 borderDistance 0.0
13038 ]
13039 LabelGraphics
13040 [
13041 text "
13042 Vertex class
13043 RegularState class
13044 FinalState class
13045 "
13046 fontSize 14
13047 fontName "Consolas"
13048 alignment "left"
13049 anchor "tl"
13050 borderDistance 6
13051 ]
13052 ]
13053
13054 node
13055 [
13056 id 7
13057 graphics
13058 [
13059 w 154.0
13060 h 68
13061 type "rectangle"
13062 fill "#FFFFFF"
13063 fill2 "#FFFFFF"
13064 outline "#000000"
13065 ]
13066 LabelGraphics
13067 [
13068 text "null"
13069 outline "#000000"
13070 fill "#FFFFFF"
13071 fontSize 16
13072 fontName "Monospace"
13073 autoSizePolicy "node_width"
13074 anchor "t"
13075 borderDistance 0.0
13076 ]
13077 LabelGraphics
13078 [
13079 text "
13080 Vertex class
13081 RegularState class
13082 FinalState class
13083 "
13084 fontSize 14
13085 fontName "Consolas"
13086 alignment "left"
13087 anchor "tl"
13088 borderDistance 6
13089 ]
13090 ]
13091
13092 node
13093 [
13094 id 8
13095 graphics
13096 [
13097 w 292.6
13098 h 96
13099 type "rectangle"
13100 fill "#FFFFFF"
13101 fill2 "#FFFFFF"
13102 outline "#000000"
13103 ]
13104 LabelGraphics
13105 [
13106 text "null"
13107 outline "#000000"
13108 fill "#FFFFFF"
13109 fontSize 16
13110 fontName "Monospace"
13111 autoSizePolicy "node_width"
13112 anchor "t"
13113 borderDistance 0.0
13114 ]
13115 LabelGraphics
13116 [
13117 text "
13118 Vertex class
13119 State class
13120 RegularState class
13121 CompositeElement class
13122 CompositeElement class UndefinedPart
13123 "
13124 fontSize 14
13125 fontName "Consolas"
13126 alignment "left"
13127 anchor "tl"
13128 borderDistance 6
13129 ]
13130 ]
13131
13132 node
13133 [
13134 id 9
13135 graphics
13136 [
13137 w 138.60000000000002
13138 h 40
13139 type "rectangle"
13140 fill "#FFFFFF"
13141 fill2 "#FFFFFF"
13142 outline "#000000"
13143 ]
13144 LabelGraphics
13145 [
13146 text "null"
13147 outline "#000000"
13148 fill "#FFFFFF"
13149 fontSize 16
13150 fontName "Monospace"
13151 autoSizePolicy "node_width"
13152 anchor "t"
13153 borderDistance 0.0
13154 ]
13155 LabelGraphics
13156 [
13157 text "
13158 Transition class
13159 "
13160 fontSize 14
13161 fontName "Consolas"
13162 alignment "left"
13163 anchor "tl"
13164 borderDistance 6
13165 ]
13166 ]
13167
13168 node
13169 [
13170 id 10
13171 graphics
13172 [
13173 w 292.6
13174 h 96
13175 type "rectangle"
13176 fill "#FFFFFF"
13177 fill2 "#FFFFFF"
13178 outline "#000000"
13179 ]
13180 LabelGraphics
13181 [
13182 text "null"
13183 outline "#000000"
13184 fill "#FFFFFF"
13185 fontSize 16
13186 fontName "Monospace"
13187 autoSizePolicy "node_width"
13188 anchor "t"
13189 borderDistance 0.0
13190 ]
13191 LabelGraphics
13192 [
13193 text "
13194 Vertex class
13195 State class
13196 RegularState class
13197 CompositeElement class
13198 CompositeElement class UndefinedPart
13199 "
13200 fontSize 14
13201 fontName "Consolas"
13202 alignment "left"
13203 anchor "tl"
13204 borderDistance 6
13205 ]
13206 ]
13207
13208 node
13209 [
13210 id 11
13211 graphics
13212 [
13213 w 146.3
13214 h 68
13215 type "rectangle"
13216 fill "#FFFFFF"
13217 fill2 "#FFFFFF"
13218 outline "#000000"
13219 ]
13220 LabelGraphics
13221 [
13222 text "null"
13223 outline "#000000"
13224 fill "#FFFFFF"
13225 fontSize 16
13226 fontName "Monospace"
13227 autoSizePolicy "node_width"
13228 anchor "t"
13229 borderDistance 0.0
13230 ]
13231 LabelGraphics
13232 [
13233 text "
13234 Pseudostate class
13235 Vertex class
13236 Exit class
13237 "
13238 fontSize 14
13239 fontName "Consolas"
13240 alignment "left"
13241 anchor "tl"
13242 borderDistance 6
13243 ]
13244 ]
13245
13246 node
13247 [
13248 id 12
13249 graphics
13250 [
13251 w 112.2
13252 h 26
13253 type "rectangle"
13254 fill "#FFFFFF"
13255 fill2 "#FFFFFF"
13256 outline "#000000"
13257 ]
13258 LabelGraphics
13259 [
13260 text "New Integers"
13261 outline "#000000"
13262 fill "#FFFFFF"
13263 fontSize 16
13264 fontName "Monospace"
13265 autoSizePolicy "node_width"
13266 anchor "t"
13267 borderDistance 0.0
13268 ]
13269 LabelGraphics
13270 [
13271 text "
13272 "
13273 fontSize 14
13274 fontName "Consolas"
13275 alignment "left"
13276 anchor "tl"
13277 borderDistance 6
13278 ]
13279 ]
13280
13281 node
13282 [
13283 id 13
13284 graphics
13285 [
13286 w 85.80000000000001
13287 h 26
13288 type "rectangle"
13289 fill "#FFFFFF"
13290 fill2 "#FFFFFF"
13291 outline "#000000"
13292 ]
13293 LabelGraphics
13294 [
13295 text "New Reals"
13296 outline "#000000"
13297 fill "#FFFFFF"
13298 fontSize 16
13299 fontName "Monospace"
13300 autoSizePolicy "node_width"
13301 anchor "t"
13302 borderDistance 0.0
13303 ]
13304 LabelGraphics
13305 [
13306 text "
13307 "
13308 fontSize 14
13309 fontName "Consolas"
13310 alignment "left"
13311 anchor "tl"
13312 borderDistance 6
13313 ]
13314 ]
13315
13316 node
13317 [
13318 id 14
13319 graphics
13320 [
13321 w 103.4
13322 h 26
13323 type "rectangle"
13324 fill "#FFFFFF"
13325 fill2 "#FFFFFF"
13326 outline "#000000"
13327 ]
13328 LabelGraphics
13329 [
13330 text "New Strings"
13331 outline "#000000"
13332 fill "#FFFFFF"
13333 fontSize 16
13334 fontName "Monospace"
13335 autoSizePolicy "node_width"
13336 anchor "t"
13337 borderDistance 0.0
13338 ]
13339 LabelGraphics
13340 [
13341 text "
13342 "
13343 fontSize 14
13344 fontName "Consolas"
13345 alignment "left"
13346 anchor "tl"
13347 borderDistance 6
13348 ]
13349 ]
13350
13351 node
13352 [
13353 id 15
13354 graphics
13355 [
13356 w 103.4
13357 h 26
13358 type "rectangle"
13359 fill "#FFFFFF"
13360 fill2 "#FFFFFF"
13361 outline "#000000"
13362 ]
13363 LabelGraphics
13364 [
13365 text "New Objects"
13366 outline "#000000"
13367 fill "#FFFFFF"
13368 fontSize 16
13369 fontName "Monospace"
13370 autoSizePolicy "node_width"
13371 anchor "t"
13372 borderDistance 0.0
13373 ]
13374 LabelGraphics
13375 [
13376 text "
13377 "
13378 fontSize 14
13379 fontName "Consolas"
13380 alignment "left"
13381 anchor "tl"
13382 borderDistance 6
13383 ]
13384 ]
13385 edge
13386 [
13387 source 7
13388 target 9
13389 graphics
13390 [
13391 fill "#000000"
13392 targetArrow "standard"
13393 ]
13394 LabelGraphics
13395 [
13396 text "incomingTransitions reference Vertex"
13397 fontSize 14
13398 fontName "Consolas"
13399 configuration "AutoFlippingLabel"
13400 model "six_pos"
13401 position "thead"
13402 ]
13403 ]
13404 edge
13405 [
13406 source 5
13407 target 9
13408 graphics
13409 [
13410 fill "#000000"
13411 width 3
13412 targetArrow "standard"
13413 ]
13414 LabelGraphics
13415 [
13416 text "outgoingTransitions reference Vertex"
13417 fontSize 14
13418 fontName "Consolas"
13419 configuration "AutoFlippingLabel"
13420 model "six_pos"
13421 position "thead"
13422 ]
13423 ]
13424 edge
13425 [
13426 source 3
13427 target 4
13428 graphics
13429 [
13430 fill "#000000"
13431 width 3
13432 targetArrow "standard"
13433 ]
13434 LabelGraphics
13435 [
13436 text "vertices reference Region"
13437 fontSize 14
13438 fontName "Consolas"
13439 configuration "AutoFlippingLabel"
13440 model "six_pos"
13441 position "thead"
13442 ]
13443 ]
13444 edge
13445 [
13446 source 3
13447 target 5
13448 graphics
13449 [
13450 fill "#000000"
13451 width 3
13452 targetArrow "standard"
13453 ]
13454 LabelGraphics
13455 [
13456 text "vertices reference Region"
13457 fontSize 14
13458 fontName "Consolas"
13459 configuration "AutoFlippingLabel"
13460 model "six_pos"
13461 position "thead"
13462 ]
13463 ]
13464 edge
13465 [
13466 source 3
13467 target 6
13468 graphics
13469 [
13470 fill "#000000"
13471 width 3
13472 targetArrow "standard"
13473 ]
13474 LabelGraphics
13475 [
13476 text "vertices reference Region"
13477 fontSize 14
13478 fontName "Consolas"
13479 configuration "AutoFlippingLabel"
13480 model "six_pos"
13481 position "thead"
13482 ]
13483 ]
13484 edge
13485 [
13486 source 3
13487 target 7
13488 graphics
13489 [
13490 fill "#000000"
13491 width 3
13492 targetArrow "standard"
13493 ]
13494 LabelGraphics
13495 [
13496 text "vertices reference Region"
13497 fontSize 14
13498 fontName "Consolas"
13499 configuration "AutoFlippingLabel"
13500 model "six_pos"
13501 position "thead"
13502 ]
13503 ]
13504 edge
13505 [
13506 source 3
13507 target 8
13508 graphics
13509 [
13510 fill "#000000"
13511 width 3
13512 targetArrow "standard"
13513 ]
13514 LabelGraphics
13515 [
13516 text "vertices reference Region"
13517 fontSize 14
13518 fontName "Consolas"
13519 configuration "AutoFlippingLabel"
13520 model "six_pos"
13521 position "thead"
13522 ]
13523 ]
13524 edge
13525 [
13526 source 3
13527 target 10
13528 graphics
13529 [
13530 fill "#000000"
13531 width 3
13532 targetArrow "standard"
13533 ]
13534 LabelGraphics
13535 [
13536 text "vertices reference Region"
13537 fontSize 14
13538 fontName "Consolas"
13539 configuration "AutoFlippingLabel"
13540 model "six_pos"
13541 position "thead"
13542 ]
13543 ]
13544 edge
13545 [
13546 source 3
13547 target 11
13548 graphics
13549 [
13550 fill "#000000"
13551 width 3
13552 targetArrow "standard"
13553 ]
13554 LabelGraphics
13555 [
13556 text "vertices reference Region"
13557 fontSize 14
13558 fontName "Consolas"
13559 configuration "AutoFlippingLabel"
13560 model "six_pos"
13561 position "thead"
13562 ]
13563 ]
13564 edge
13565 [
13566 source 9
13567 target 7
13568 graphics
13569 [
13570 fill "#000000"
13571 targetArrow "standard"
13572 ]
13573 LabelGraphics
13574 [
13575 text "target reference Transition"
13576 fontSize 14
13577 fontName "Consolas"
13578 configuration "AutoFlippingLabel"
13579 model "six_pos"
13580 position "thead"
13581 ]
13582 ]
13583 edge
13584 [
13585 source 9
13586 target 5
13587 graphics
13588 [
13589 fill "#000000"
13590 targetArrow "standard"
13591 ]
13592 LabelGraphics
13593 [
13594 text "source reference Transition"
13595 fontSize 14
13596 fontName "Consolas"
13597 configuration "AutoFlippingLabel"
13598 model "six_pos"
13599 position "thead"
13600 ]
13601 ]
13602 edge
13603 [
13604 source 0
13605 target 3
13606 graphics
13607 [
13608 fill "#000000"
13609 width 3
13610 targetArrow "standard"
13611 ]
13612 LabelGraphics
13613 [
13614 text "regions reference CompositeElement"
13615 fontSize 14
13616 fontName "Consolas"
13617 configuration "AutoFlippingLabel"
13618 model "six_pos"
13619 position "thead"
13620 ]
13621 ]
13622]
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 0b9199f4..6c9b4ffb 100644
--- 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
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.xmi
index 8136fd72..137f0943 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,15 +1,14 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<yakindu:Statechart xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:yakindu="YakinduMetamodel"> 2<yakindu:Statechart xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:yakindu="YakinduMetamodel">
3 <regions> 3 <regions>
4 <vertices xsi:type="yakindu:State" incomingTransitions="//@regions.0/@vertices.3/@outgoingTransitions.1"/> 4 <vertices xsi:type="yakindu:FinalState"/>
5 <vertices xsi:type="yakindu:Entry"> 5 <vertices xsi:type="yakindu:State"/>
6 <outgoingTransitions target="//@regions.0/@vertices.3"/>
7 </vertices>
8 <vertices xsi:type="yakindu:Exit"/> 6 <vertices xsi:type="yakindu:Exit"/>
9 <vertices xsi:type="yakindu:State" incomingTransitions="//@regions.0/@vertices.1/@outgoingTransitions.0"> 7 <vertices xsi:type="yakindu:FinalState"/>
10 <outgoingTransitions target="//@regions.0/@vertices.4"/> 8 <vertices xsi:type="yakindu:State"/>
11 <outgoingTransitions target="//@regions.0/@vertices.0"/> 9 <vertices xsi:type="yakindu:Entry">
10 <outgoingTransitions target="//@regions.0/@vertices.6"/>
12 </vertices> 11 </vertices>
13 <vertices xsi:type="yakindu:FinalState" incomingTransitions="//@regions.0/@vertices.3/@outgoingTransitions.0"/> 12 <vertices xsi:type="yakindu:FinalState" incomingTransitions="//@regions.0/@vertices.5/@outgoingTransitions.0"/>
14 </regions> 13 </regions>
15</yakindu:Statechart> 14</yakindu:Statechart>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.gml
index 77878c2e..f0112af7 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
@@ -12376,3 +12376,835 @@ graph
12376 ] 12376 ]
12377 ] 12377 ]
12378] 12378]
12379graph
12380[
12381 node
12382 [
12383 id 0
12384 graphics
12385 [
12386 w 277.20000000000005
12387 h 82
12388 type "rectangle"
12389 fill "#FFFFFF"
12390 fill2 "#FFFFFF"
12391 outline "#000000"
12392 ]
12393 LabelGraphics
12394 [
12395 text "o 1"
12396 outline "#000000"
12397 fill "#FFFFFF"
12398 fontSize 16
12399 fontName "Monospace"
12400 autoSizePolicy "node_width"
12401 anchor "t"
12402 borderDistance 0.0
12403 ]
12404 LabelGraphics
12405 [
12406 text "
12407 Statechart class DefinedPart
12408 CompositeElement class DefinedPart
12409 Statechart class
12410 CompositeElement class
12411 "
12412 fontSize 14
12413 fontName "Consolas"
12414 alignment "left"
12415 anchor "tl"
12416 borderDistance 6
12417 ]
12418 ]
12419
12420 node
12421 [
12422 id 1
12423 graphics
12424 [
12425 w 41.800000000000004
12426 h 26
12427 type "rectangle"
12428 fill "#FFFFFF"
12429 fill2 "#FFFFFF"
12430 outline "#000000"
12431 ]
12432 LabelGraphics
12433 [
12434 text "true"
12435 outline "#000000"
12436 fill "#FFFFFF"
12437 fontSize 16
12438 fontName "Monospace"
12439 autoSizePolicy "node_width"
12440 anchor "t"
12441 borderDistance 0.0
12442 ]
12443 LabelGraphics
12444 [
12445 text "
12446 "
12447 fontSize 14
12448 fontName "Consolas"
12449 alignment "left"
12450 anchor "tl"
12451 borderDistance 6
12452 ]
12453 ]
12454
12455 node
12456 [
12457 id 2
12458 graphics
12459 [
12460 w 50.6
12461 h 26
12462 type "rectangle"
12463 fill "#FFFFFF"
12464 fill2 "#FFFFFF"
12465 outline "#000000"
12466 ]
12467 LabelGraphics
12468 [
12469 text "false"
12470 outline "#000000"
12471 fill "#FFFFFF"
12472 fontSize 16
12473 fontName "Monospace"
12474 autoSizePolicy "node_width"
12475 anchor "t"
12476 borderDistance 0.0
12477 ]
12478 LabelGraphics
12479 [
12480 text "
12481 "
12482 fontSize 14
12483 fontName "Consolas"
12484 alignment "left"
12485 anchor "tl"
12486 borderDistance 6
12487 ]
12488 ]
12489
12490 node
12491 [
12492 id 3
12493 graphics
12494 [
12495 w 107.80000000000001
12496 h 40
12497 type "rectangle"
12498 fill "#FFFFFF"
12499 fill2 "#FFFFFF"
12500 outline "#000000"
12501 ]
12502 LabelGraphics
12503 [
12504 text "null"
12505 outline "#000000"
12506 fill "#FFFFFF"
12507 fontSize 16
12508 fontName "Monospace"
12509 autoSizePolicy "node_width"
12510 anchor "t"
12511 borderDistance 0.0
12512 ]
12513 LabelGraphics
12514 [
12515 text "
12516 Region class
12517 "
12518 fontSize 14
12519 fontName "Consolas"
12520 alignment "left"
12521 anchor "tl"
12522 borderDistance 6
12523 ]
12524 ]
12525
12526 node
12527 [
12528 id 4
12529 graphics
12530 [
12531 w 154.0
12532 h 68
12533 type "rectangle"
12534 fill "#FFFFFF"
12535 fill2 "#FFFFFF"
12536 outline "#000000"
12537 ]
12538 LabelGraphics
12539 [
12540 text "null"
12541 outline "#000000"
12542 fill "#FFFFFF"
12543 fontSize 16
12544 fontName "Monospace"
12545 autoSizePolicy "node_width"
12546 anchor "t"
12547 borderDistance 0.0
12548 ]
12549 LabelGraphics
12550 [
12551 text "
12552 Vertex class
12553 RegularState class
12554 FinalState class
12555 "
12556 fontSize 14
12557 fontName "Consolas"
12558 alignment "left"
12559 anchor "tl"
12560 borderDistance 6
12561 ]
12562 ]
12563
12564 node
12565 [
12566 id 5
12567 graphics
12568 [
12569 w 146.3
12570 h 68
12571 type "rectangle"
12572 fill "#FFFFFF"
12573 fill2 "#FFFFFF"
12574 outline "#000000"
12575 ]
12576 LabelGraphics
12577 [
12578 text "null"
12579 outline "#000000"
12580 fill "#FFFFFF"
12581 fontSize 16
12582 fontName "Monospace"
12583 autoSizePolicy "node_width"
12584 anchor "t"
12585 borderDistance 0.0
12586 ]
12587 LabelGraphics
12588 [
12589 text "
12590 Pseudostate class
12591 Vertex class
12592 Entry class
12593 "
12594 fontSize 14
12595 fontName "Consolas"
12596 alignment "left"
12597 anchor "tl"
12598 borderDistance 6
12599 ]
12600 ]
12601
12602 node
12603 [
12604 id 6
12605 graphics
12606 [
12607 w 154.0
12608 h 68
12609 type "rectangle"
12610 fill "#FFFFFF"
12611 fill2 "#FFFFFF"
12612 outline "#000000"
12613 ]
12614 LabelGraphics
12615 [
12616 text "null"
12617 outline "#000000"
12618 fill "#FFFFFF"
12619 fontSize 16
12620 fontName "Monospace"
12621 autoSizePolicy "node_width"
12622 anchor "t"
12623 borderDistance 0.0
12624 ]
12625 LabelGraphics
12626 [
12627 text "
12628 Vertex class
12629 RegularState class
12630 FinalState class
12631 "
12632 fontSize 14
12633 fontName "Consolas"
12634 alignment "left"
12635 anchor "tl"
12636 borderDistance 6
12637 ]
12638 ]
12639
12640 node
12641 [
12642 id 7
12643 graphics
12644 [
12645 w 154.0
12646 h 68
12647 type "rectangle"
12648 fill "#FFFFFF"
12649 fill2 "#FFFFFF"
12650 outline "#000000"
12651 ]
12652 LabelGraphics
12653 [
12654 text "null"
12655 outline "#000000"
12656 fill "#FFFFFF"
12657 fontSize 16
12658 fontName "Monospace"
12659 autoSizePolicy "node_width"
12660 anchor "t"
12661 borderDistance 0.0
12662 ]
12663 LabelGraphics
12664 [
12665 text "
12666 Vertex class
12667 RegularState class
12668 FinalState class
12669 "
12670 fontSize 14
12671 fontName "Consolas"
12672 alignment "left"
12673 anchor "tl"
12674 borderDistance 6
12675 ]
12676 ]
12677
12678 node
12679 [
12680 id 8
12681 graphics
12682 [
12683 w 292.6
12684 h 96
12685 type "rectangle"
12686 fill "#FFFFFF"
12687 fill2 "#FFFFFF"
12688 outline "#000000"
12689 ]
12690 LabelGraphics
12691 [
12692 text "null"
12693 outline "#000000"
12694 fill "#FFFFFF"
12695 fontSize 16
12696 fontName "Monospace"
12697 autoSizePolicy "node_width"
12698 anchor "t"
12699 borderDistance 0.0
12700 ]
12701 LabelGraphics
12702 [
12703 text "
12704 Vertex class
12705 State class
12706 RegularState class
12707 CompositeElement class
12708 CompositeElement class UndefinedPart
12709 "
12710 fontSize 14
12711 fontName "Consolas"
12712 alignment "left"
12713 anchor "tl"
12714 borderDistance 6
12715 ]
12716 ]
12717
12718 node
12719 [
12720 id 9
12721 graphics
12722 [
12723 w 138.60000000000002
12724 h 40
12725 type "rectangle"
12726 fill "#FFFFFF"
12727 fill2 "#FFFFFF"
12728 outline "#000000"
12729 ]
12730 LabelGraphics
12731 [
12732 text "null"
12733 outline "#000000"
12734 fill "#FFFFFF"
12735 fontSize 16
12736 fontName "Monospace"
12737 autoSizePolicy "node_width"
12738 anchor "t"
12739 borderDistance 0.0
12740 ]
12741 LabelGraphics
12742 [
12743 text "
12744 Transition class
12745 "
12746 fontSize 14
12747 fontName "Consolas"
12748 alignment "left"
12749 anchor "tl"
12750 borderDistance 6
12751 ]
12752 ]
12753
12754 node
12755 [
12756 id 10
12757 graphics
12758 [
12759 w 292.6
12760 h 96
12761 type "rectangle"
12762 fill "#FFFFFF"
12763 fill2 "#FFFFFF"
12764 outline "#000000"
12765 ]
12766 LabelGraphics
12767 [
12768 text "null"
12769 outline "#000000"
12770 fill "#FFFFFF"
12771 fontSize 16
12772 fontName "Monospace"
12773 autoSizePolicy "node_width"
12774 anchor "t"
12775 borderDistance 0.0
12776 ]
12777 LabelGraphics
12778 [
12779 text "
12780 Vertex class
12781 State class
12782 RegularState class
12783 CompositeElement class
12784 CompositeElement class UndefinedPart
12785 "
12786 fontSize 14
12787 fontName "Consolas"
12788 alignment "left"
12789 anchor "tl"
12790 borderDistance 6
12791 ]
12792 ]
12793
12794 node
12795 [
12796 id 11
12797 graphics
12798 [
12799 w 292.6
12800 h 96
12801 type "rectangle"
12802 fill "#FFFFFF"
12803 fill2 "#FFFFFF"
12804 outline "#000000"
12805 ]
12806 LabelGraphics
12807 [
12808 text "null"
12809 outline "#000000"
12810 fill "#FFFFFF"
12811 fontSize 16
12812 fontName "Monospace"
12813 autoSizePolicy "node_width"
12814 anchor "t"
12815 borderDistance 0.0
12816 ]
12817 LabelGraphics
12818 [
12819 text "
12820 Vertex class
12821 State class
12822 RegularState class
12823 CompositeElement class
12824 CompositeElement class UndefinedPart
12825 "
12826 fontSize 14
12827 fontName "Consolas"
12828 alignment "left"
12829 anchor "tl"
12830 borderDistance 6
12831 ]
12832 ]
12833
12834 node
12835 [
12836 id 12
12837 graphics
12838 [
12839 w 112.2
12840 h 26
12841 type "rectangle"
12842 fill "#FFFFFF"
12843 fill2 "#FFFFFF"
12844 outline "#000000"
12845 ]
12846 LabelGraphics
12847 [
12848 text "New Integers"
12849 outline "#000000"
12850 fill "#FFFFFF"
12851 fontSize 16
12852 fontName "Monospace"
12853 autoSizePolicy "node_width"
12854 anchor "t"
12855 borderDistance 0.0
12856 ]
12857 LabelGraphics
12858 [
12859 text "
12860 "
12861 fontSize 14
12862 fontName "Consolas"
12863 alignment "left"
12864 anchor "tl"
12865 borderDistance 6
12866 ]
12867 ]
12868
12869 node
12870 [
12871 id 13
12872 graphics
12873 [
12874 w 85.80000000000001
12875 h 26
12876 type "rectangle"
12877 fill "#FFFFFF"
12878 fill2 "#FFFFFF"
12879 outline "#000000"
12880 ]
12881 LabelGraphics
12882 [
12883 text "New Reals"
12884 outline "#000000"
12885 fill "#FFFFFF"
12886 fontSize 16
12887 fontName "Monospace"
12888 autoSizePolicy "node_width"
12889 anchor "t"
12890 borderDistance 0.0
12891 ]
12892 LabelGraphics
12893 [
12894 text "
12895 "
12896 fontSize 14
12897 fontName "Consolas"
12898 alignment "left"
12899 anchor "tl"
12900 borderDistance 6
12901 ]
12902 ]
12903
12904 node
12905 [
12906 id 14
12907 graphics
12908 [
12909 w 103.4
12910 h 26
12911 type "rectangle"
12912 fill "#FFFFFF"
12913 fill2 "#FFFFFF"
12914 outline "#000000"
12915 ]
12916 LabelGraphics
12917 [
12918 text "New Strings"
12919 outline "#000000"
12920 fill "#FFFFFF"
12921 fontSize 16
12922 fontName "Monospace"
12923 autoSizePolicy "node_width"
12924 anchor "t"
12925 borderDistance 0.0
12926 ]
12927 LabelGraphics
12928 [
12929 text "
12930 "
12931 fontSize 14
12932 fontName "Consolas"
12933 alignment "left"
12934 anchor "tl"
12935 borderDistance 6
12936 ]
12937 ]
12938
12939 node
12940 [
12941 id 15
12942 graphics
12943 [
12944 w 103.4
12945 h 26
12946 type "rectangle"
12947 fill "#FFFFFF"
12948 fill2 "#FFFFFF"
12949 outline "#000000"
12950 ]
12951 LabelGraphics
12952 [
12953 text "New Objects"
12954 outline "#000000"
12955 fill "#FFFFFF"
12956 fontSize 16
12957 fontName "Monospace"
12958 autoSizePolicy "node_width"
12959 anchor "t"
12960 borderDistance 0.0
12961 ]
12962 LabelGraphics
12963 [
12964 text "
12965 "
12966 fontSize 14
12967 fontName "Consolas"
12968 alignment "left"
12969 anchor "tl"
12970 borderDistance 6
12971 ]
12972 ]
12973 edge
12974 [
12975 source 7
12976 target 9
12977 graphics
12978 [
12979 fill "#000000"
12980 targetArrow "standard"
12981 ]
12982 LabelGraphics
12983 [
12984 text "incomingTransitions reference Vertex"
12985 fontSize 14
12986 fontName "Consolas"
12987 configuration "AutoFlippingLabel"
12988 model "six_pos"
12989 position "thead"
12990 ]
12991 ]
12992 edge
12993 [
12994 source 5
12995 target 9
12996 graphics
12997 [
12998 fill "#000000"
12999 width 3
13000 targetArrow "standard"
13001 ]
13002 LabelGraphics
13003 [
13004 text "outgoingTransitions reference Vertex"
13005 fontSize 14
13006 fontName "Consolas"
13007 configuration "AutoFlippingLabel"
13008 model "six_pos"
13009 position "thead"
13010 ]
13011 ]
13012 edge
13013 [
13014 source 3
13015 target 4
13016 graphics
13017 [
13018 fill "#000000"
13019 width 3
13020 targetArrow "standard"
13021 ]
13022 LabelGraphics
13023 [
13024 text "vertices reference Region"
13025 fontSize 14
13026 fontName "Consolas"
13027 configuration "AutoFlippingLabel"
13028 model "six_pos"
13029 position "thead"
13030 ]
13031 ]
13032 edge
13033 [
13034 source 3
13035 target 5
13036 graphics
13037 [
13038 fill "#000000"
13039 width 3
13040 targetArrow "standard"
13041 ]
13042 LabelGraphics
13043 [
13044 text "vertices reference Region"
13045 fontSize 14
13046 fontName "Consolas"
13047 configuration "AutoFlippingLabel"
13048 model "six_pos"
13049 position "thead"
13050 ]
13051 ]
13052 edge
13053 [
13054 source 3
13055 target 6
13056 graphics
13057 [
13058 fill "#000000"
13059 width 3
13060 targetArrow "standard"
13061 ]
13062 LabelGraphics
13063 [
13064 text "vertices reference Region"
13065 fontSize 14
13066 fontName "Consolas"
13067 configuration "AutoFlippingLabel"
13068 model "six_pos"
13069 position "thead"
13070 ]
13071 ]
13072 edge
13073 [
13074 source 3
13075 target 7
13076 graphics
13077 [
13078 fill "#000000"
13079 width 3
13080 targetArrow "standard"
13081 ]
13082 LabelGraphics
13083 [
13084 text "vertices reference Region"
13085 fontSize 14
13086 fontName "Consolas"
13087 configuration "AutoFlippingLabel"
13088 model "six_pos"
13089 position "thead"
13090 ]
13091 ]
13092 edge
13093 [
13094 source 3
13095 target 8
13096 graphics
13097 [
13098 fill "#000000"
13099 width 3
13100 targetArrow "standard"
13101 ]
13102 LabelGraphics
13103 [
13104 text "vertices reference Region"
13105 fontSize 14
13106 fontName "Consolas"
13107 configuration "AutoFlippingLabel"
13108 model "six_pos"
13109 position "thead"
13110 ]
13111 ]
13112 edge
13113 [
13114 source 3
13115 target 10
13116 graphics
13117 [
13118 fill "#000000"
13119 width 3
13120 targetArrow "standard"
13121 ]
13122 LabelGraphics
13123 [
13124 text "vertices reference Region"
13125 fontSize 14
13126 fontName "Consolas"
13127 configuration "AutoFlippingLabel"
13128 model "six_pos"
13129 position "thead"
13130 ]
13131 ]
13132 edge
13133 [
13134 source 3
13135 target 11
13136 graphics
13137 [
13138 fill "#000000"
13139 width 3
13140 targetArrow "standard"
13141 ]
13142 LabelGraphics
13143 [
13144 text "vertices reference Region"
13145 fontSize 14
13146 fontName "Consolas"
13147 configuration "AutoFlippingLabel"
13148 model "six_pos"
13149 position "thead"
13150 ]
13151 ]
13152 edge
13153 [
13154 source 9
13155 target 7
13156 graphics
13157 [
13158 fill "#000000"
13159 targetArrow "standard"
13160 ]
13161 LabelGraphics
13162 [
13163 text "target reference Transition"
13164 fontSize 14
13165 fontName "Consolas"
13166 configuration "AutoFlippingLabel"
13167 model "six_pos"
13168 position "thead"
13169 ]
13170 ]
13171 edge
13172 [
13173 source 9
13174 target 5
13175 graphics
13176 [
13177 fill "#000000"
13178 targetArrow "standard"
13179 ]
13180 LabelGraphics
13181 [
13182 text "source reference Transition"
13183 fontSize 14
13184 fontName "Consolas"
13185 configuration "AutoFlippingLabel"
13186 model "six_pos"
13187 position "thead"
13188 ]
13189 ]
13190 edge
13191 [
13192 source 0
13193 target 3
13194 graphics
13195 [
13196 fill "#000000"
13197 width 3
13198 targetArrow "standard"
13199 ]
13200 LabelGraphics
13201 [
13202 text "regions reference CompositeElement"
13203 fontSize 14
13204 fontName "Consolas"
13205 configuration "AutoFlippingLabel"
13206 model "six_pos"
13207 position "thead"
13208 ]
13209 ]
13210]
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 08502c12..548f8dae 100644
--- 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
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.xmi
index f61f6ffb..0d85e1cd 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,15 +1,14 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<yakindu:Statechart xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:yakindu="YakinduMetamodel"> 2<yakindu:Statechart xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:yakindu="YakinduMetamodel">
3 <regions> 3 <regions>
4 <vertices xsi:type="yakindu:Exit"/> 4 <vertices xsi:type="yakindu:FinalState"/>
5 <vertices xsi:type="yakindu:State" incomingTransitions="//@regions.0/@vertices.4/@outgoingTransitions.0"/> 5 <vertices xsi:type="yakindu:State"/>
6 <vertices xsi:type="yakindu:State"/>
7 <vertices xsi:type="yakindu:FinalState"/>
8 <vertices xsi:type="yakindu:State"/>
6 <vertices xsi:type="yakindu:Entry"> 9 <vertices xsi:type="yakindu:Entry">
7 <outgoingTransitions target="//@regions.0/@vertices.4"/> 10 <outgoingTransitions target="//@regions.0/@vertices.6"/>
8 </vertices> 11 </vertices>
9 <vertices xsi:type="yakindu:Exit"/> 12 <vertices xsi:type="yakindu:FinalState" incomingTransitions="//@regions.0/@vertices.5/@outgoingTransitions.0"/>
10 <vertices xsi:type="yakindu:State" incomingTransitions="//@regions.0/@vertices.2/@outgoingTransitions.0">
11 <outgoingTransitions target="//@regions.0/@vertices.1"/>
12 </vertices>
13 <vertices xsi:type="yakindu:FinalState"/>
14 </regions> 13 </regions>
15</yakindu:Statechart> 14</yakindu:Statechart>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv
index 9e25c13a..290c841e 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
@@ -16,3 +16,5 @@ Task;Run;Result;Domain to logic transformation time;Logic to solver transformati
161;1;ModelResultImpl;42;3179;15266;13359431300;12045;12060;12077;12082;12107;9023;25;176;0;9 161;1;ModelResultImpl;42;3179;15266;13359431300;12045;12060;12077;12082;12107;9023;25;176;0;9
17Task;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 17Task;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
181;1;ModelResultImpl;646;4720;6290;14663107900;900;1000;1126;1525;1621;1177;235;34;0;17 181;1;ModelResultImpl;646;4720;6290;14663107900;900;1000;1126;1525;1621;1177;235;34;0;17
19Task;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
201;1;ModelResultImpl;564;4692;4940;13642804600;616;832;966;1014;1191;829;198;27;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 7e10c75a..28ea4798 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml
@@ -20,8 +20,8 @@
20 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.nonSymmetricOpposite"/> 20 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.nonSymmetricOpposite"/>
21 </group> 21 </group>
22 </extension> 22 </extension>
23 <extension id="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamSPatterns" point="org.eclipse.viatra.query.runtime.queryspecification"> 23 <extension id="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamPatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
24 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamSPatterns" id="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamSPatterns"> 24 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamPatterns" id="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamPatterns">
25 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.terminatorAndInformation"/> 25 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.terminatorAndInformation"/>
26 </group> 26 </group>
27 </extension> 27 </extension>
@@ -129,6 +129,12 @@
129 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.twoSynch"/> 129 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.twoSynch"/>
130 </group> 130 </group>
131 </extension> 131 </extension>
132 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
133 <wellbehaving-derived-feature classifier-name="FunctionalElement" feature-name="model" package-nsUri="FamMetamodel"/>
134 </extension>
135 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
136 <wellbehaving-derived-feature classifier-name="Function" feature-name="type" package-nsUri="FamMetamodel"/>
137 </extension>
132 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.live" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features"> 138 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.live" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
133 <wellbehaving-derived-feature classifier-name="FileSystem" feature-name="live" package-nsUri="FileSystemMetamodel"/> 139 <wellbehaving-derived-feature classifier-name="FileSystem" feature-name="live" package-nsUri="FileSystemMetamodel"/>
134 </extension> 140 </extension>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/functionalPlugin.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking.txt
index ca86fe6b..ca86fe6b 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/functionalPlugin.txt
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking.txt
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking2.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking2.txt
new file mode 100644
index 00000000..ea39dade
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking2.txt
@@ -0,0 +1,141 @@
1<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.0"?><!--
2--><plugin>
3 <extension point="org.eclipse.emf.ecore.generated_package">
4 <!-- @generated fam -->
5 <package class="ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage" genModel="metamodels/fam.genmodel" uri="FamMetamodel"/>
6 </extension>
7 <extension point="org.eclipse.emf.ecore.generated_package">
8 <!-- @generated yakindu -->
9 <package class="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage" genModel="metamodels/yakindu.genmodel" uri="YakinduMetamodel"/>
10 </extension>
11 <extension point="org.eclipse.emf.ecore.generated_package">
12 <!-- @generated filesystem -->
13 <package class="ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage" genModel="metamodels/filesystem.genmodel" uri="FileSystemMetamodel"/>
14 </extension>
15 <extension id="ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.EcorePatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
16 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.EcorePatterns" id="ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.EcorePatterns">
17 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.directSupertype"/>
18 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.loopInInheritence"/>
19 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.opposite"/>
20 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.nonSymmetricOpposite"/>
21 </group>
22 </extension>
23 <extension id="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamPatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
24 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamPatterns" id="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamPatterns">
25 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.terminatorAndInformation"/>
26 </group>
27 </extension>
28 <extension id="ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.FileSystemPatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
29 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.FileSystemPatterns" id="ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.FileSystemPatterns">
30 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.patternContent"/>
31 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.live"/>
32 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.contentInNotLive"/>
33 </group>
34 </extension>
35 <extension id="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.YakinduMutatedPatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
36 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.YakinduMutatedPatterns" id="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.YakinduMutatedPatterns">
37 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.entryInRegion_M0"/>
38 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.entryInRegion_M1"/>
39 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.entryInRegion_M2"/>
40 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noEntryInRegion_M0"/>
41 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noEntryInRegion_M1"/>
42 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noEntryInRegion_M2"/>
43 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noEntryInRegion_M3"/>
44 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noEntryInRegion_M4"/>
45 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noEntryInRegion_M5"/>
46 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleEntryInRegion_M0"/>
47 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleEntryInRegion_M1"/>
48 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleEntryInRegion_M2"/>
49 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleEntryInRegion_M3"/>
50 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleEntryInRegion_M4"/>
51 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleEntryInRegion_M5"/>
52 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.transition_M0"/>
53 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.transition_M1"/>
54 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.transition_M2"/>
55 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.transition_M3"/>
56 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.transition_M4"/>
57 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.incomingToEntry_M0"/>
58 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.incomingToEntry_1"/>
59 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.incomingToEntry_2"/>
60 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.incomingToEntry_3"/>
61 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.incomingToEntry_4"/>
62 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.incomingToEntry_5"/>
63 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noOutgoingTransitionFromEntry_M0"/>
64 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noOutgoingTransitionFromEntry_M1"/>
65 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noOutgoingTransitionFromEntry_M2"/>
66 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noOutgoingTransitionFromEntry_M3"/>
67 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noOutgoingTransitionFromEntry_M4"/>
68 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noOutgoingTransitionFromEntry_M5"/>
69 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleTransitionFromEntry_M0"/>
70 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleTransitionFromEntry_M1"/>
71 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleTransitionFromEntry_M2"/>
72 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleTransitionFromEntry_M3"/>
73 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleTransitionFromEntry_M4"/>
74 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.outgoingFromExit_M0"/>
75 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.outgoingFromExit_M1"/>
76 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.outgoingFromExit_M2"/>
77 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.outgoingFromFinal_M0"/>
78 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.outgoingFromFinal_M1"/>
79 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.outgoingFromFinal_M2"/>
80 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noStateInRegion_M0"/>
81 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noStateInRegion_M1"/>
82 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noStateInRegion_M2"/>
83 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noStateInRegion_M3"/>
84 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.StateInRegion_M0"/>
85 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.StateInRegion_M1"/>
86 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.StateInRegion_M2"/>
87 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoOutgoing_M0"/>
88 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoOutgoing_M1"/>
89 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoOutgoing_M2"/>
90 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoOutgoing_M3"/>
91 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoOutgoing_M4"/>
92 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoOutgoing_M5"/>
93 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoOutgoing_M6"/>
94 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoIncoming_M0"/>
95 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoIncoming_M1"/>
96 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoIncoming_M2"/>
97 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoIncoming_M3"/>
98 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoIncoming_M4"/>
99 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoIncoming_M5"/>
100 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoIncoming_M6"/>
101 </group>
102 </extension>
103 <extension id="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.YakinduPatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
104 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.YakinduPatterns" id="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.YakinduPatterns">
105 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.entryInRegion"/>
106 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noEntryInRegion"/>
107 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleEntryInRegion"/>
108 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.transition"/>
109 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.incomingToEntry"/>
110 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noOutgoingTransitionFromEntry"/>
111 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.multipleTransitionFromEntry"/>
112 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.outgoingFromExit"/>
113 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.outgoingFromFinal"/>
114 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.noStateInRegion"/>
115 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.StateInRegion"/>
116 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoOutgoing"/>
117 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.choiceHasNoIncoming"/>
118 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.synchHasNoOutgoing"/>
119 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.synchHasNoIncoming"/>
120 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.SynchronizedIncomingInSameRegion"/>
121 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.notSynchronizingStates"/>
122 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.hasMultipleOutgoingTrainsition"/>
123 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.hasMultipleIncomingTrainsition"/>
124 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.SynchronizedRegionsAreNotSiblings"/>
125 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.child"/>
126 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.SynchronizedRegionDoesNotHaveMultipleRegions"/>
127 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.hasMultipleRegions"/>
128 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.synchThree"/>
129 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.twoSynch"/>
130 </group>
131 </extension>
132 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
133 <wellbehaving-derived-feature classifier-name="FunctionalElement" feature-name="model" package-nsUri="FamMetamodel"/>
134 </extension>
135 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
136 <wellbehaving-derived-feature classifier-name="Function" feature-name="type" package-nsUri="FamMetamodel"/>
137 </extension>
138 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.live" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
139 <wellbehaving-derived-feature classifier-name="FileSystem" feature-name="live" package-nsUri="FileSystemMetamodel"/>
140 </extension>
141</plugin>
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/famPatterns.vql
index 153fec91..1c6a545e 100644
--- 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/famPatterns.vql
@@ -1,6 +1,6 @@
1package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries 1package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries
2 2
3import epackage "http://www.inf.mit.bme.hu/viatrasolver/example/fam" 3import epackage "FamMetamodel"
4 4
5@Constraint(message="terminatorAndInformation", severity="error", key={T}) 5@Constraint(message="terminatorAndInformation", severity="error", key={T})
6pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = { 6pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
@@ -11,6 +11,7 @@ pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
11 FunctionalInput.terminator(In,T); 11 FunctionalInput.terminator(In,T);
12} 12}
13 13
14/*
14@QueryBasedFeature 15@QueryBasedFeature
15pattern type(This : Function, Target : FunctionType) = { 16pattern type(This : Function, Target : FunctionType) = {
16 find rootElements(_Model, This); 17 find rootElements(_Model, This);
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 1d3019e8..69a6b9f4 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 @@
1/** 1/**
2 * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famSPatterns.vql 2 * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql
3 */ 3 */
4package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries; 4package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries;
5 5