aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-04-15 00:06:29 -0400
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-04-15 00:06:29 -0400
commit2f8149678539a94f2f4ca2e7ff5640ff5d7087cc (patch)
tree87355cdeb19a987a6ffc2dd215460e2bc34f1683
parentVAMPIRE: #39 Reorganise tests, working yakindu test, need debugging (diff)
downloadVIATRA-Generator-2f8149678539a94f2f4ca2e7ff5640ff5d7087cc.tar.gz
VIATRA-Generator-2f8149678539a94f2f4ca2e7ff5640ff5d7087cc.tar.zst
VIATRA-Generator-2f8149678539a94f2f4ca2e7ff5640ff5d7087cc.zip
VAMPIRE: close #22, improve test structure for #39, .vql file trouble
-rw-r--r--Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbinbin1701 -> 1701 bytes
-rw-r--r--Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbinbin2526 -> 2526 bytes
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml29
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/xtend-gen/ca/mcgill/ecse/dslreasoner/ide/.VampireLanguageIdeModule.xtendbinbin1685 -> 1685 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/xtend-gen/ca/mcgill/ecse/dslreasoner/ide/.VampireLanguageIdeSetup.xtendbinbin2500 -> 2500 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/.VampireLanguageUiModule.xtendbinbin2342 -> 2342 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/contentassist/.VampireLanguageProposalProvider.xtendbinbin1792 -> 1792 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/labeling/.VampireLanguageDescriptionLabelProvider.xtendbinbin1965 -> 1965 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/labeling/.VampireLanguageLabelProvider.xtendbinbin2405 -> 2405 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/outline/.VampireLanguageOutlineTreeProvider.xtendbinbin1819 -> 1819 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/quickfix/.VampireLanguageQuickfixProvider.xtendbinbin1786 -> 1786 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/.VampireLanguageRuntimeModule.xtendbinbin1706 -> 1706 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/.VampireLanguageStandaloneSetup.xtendbinbin1980 -> 1980 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/formatting2/.VampireLanguageFormatter.xtendbinbin4130 -> 4130 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/generator/.VampireLanguageGenerator.xtendbinbin2338 -> 2338 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/scoping/.VampireLanguageScopeProvider.xtendbinbin1751 -> 1751 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/validation/.VampireLanguageValidator.xtendbinbin1736 -> 1736 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend12
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend183
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend1
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend12
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend23
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireAnalyzerConfiguration.xtendbinbin2691 -> 2691 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbinbin5892 -> 5892 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbinbin18156 -> 18156 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbinbin4215 -> 4215 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ConstantMapper.xtendbinbin3164 -> 3164 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ContainmentMapper.xtendbinbin10551 -> 10674 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_RelationMapper.xtendbinbin8209 -> 6457 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbinbin9839 -> 9839 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbinbin13093 -> 13046 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbinbin10705 -> 10792 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Vampire2LogicMapper.xtendbinbin1720 -> 1720 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbinbin4908 -> 4908 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation.xtendbinbin1491 -> 1491 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtendbinbin1688 -> 1688 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.java15
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java159
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java18
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.java25
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.aird379
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.aird111
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml7
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/TerminatorAndInformation.java747
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.classpath1
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/META-INF/MANIFEST.MF6
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM/FaModel.xmi (renamed from Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FaModel.xmi)0
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem7
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/vampireProblem.tptp72
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.xml20
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/FamPatterns.java53
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/TerminatorAndInformation.java747
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend76
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend8
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.xtend13
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend6
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbinbin6358 -> 4545 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbinbin6825 -> 6296 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbinbin6088 -> 6618 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbinbin6456 -> 6456 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbinbin6042 -> 6040 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.java61
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java7
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.java11
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.java4
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbinbin4997 -> 4997 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbinbin687 -> 687 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbinbin6500 -> 6500 bytes
68 files changed, 728 insertions, 2085 deletions
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin
index d6392a0b..9edfdac5 100644
--- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin
+++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin
Binary files differ
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin
index c97efa0f..0979473a 100644
--- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin
+++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin
Binary files differ
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml
index 9ace526f..8069f168 100644
--- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml
@@ -3,6 +3,35 @@
3 <!-- @generated yakindu_simplified --> 3 <!-- @generated yakindu_simplified -->
4 <package class="hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage" genModel="model/yakindu_simplified.genmodel" uri="hu.bme.mit.inf.yakindumm"/> 4 <package class="hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage" genModel="model/yakindu_simplified.genmodel" uri="hu.bme.mit.inf.yakindumm"/>
5 </extension> 5 </extension>
6 <extension id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns" point="org.eclipse.viatra.query.runtime.queryspecification">
7 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns" id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns">
8 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.entryInRegion"/>
9 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.noEntryInRegion"/>
10 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.multipleEntryInRegion"/>
11 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.transition"/>
12 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.incomingToEntry"/>
13 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.noOutgoingTransitionFromEntry"/>
14 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.multipleTransitionFromEntry"/>
15 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.outgoingFromExit"/>
16 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.outgoingFromFinal"/>
17 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.noStateInRegion"/>
18 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.StateInRegion"/>
19 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.choiceHasNoOutgoing"/>
20 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.choiceHasNoIncoming"/>
21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.synchHasNoOutgoing"/>
22 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.synchHasNoIncoming"/>
23 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.SynchronizedIncomingInSameRegion"/>
24 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.notSynchronizingStates"/>
25 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.hasMultipleOutgoingTrainsition"/>
26 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.hasMultipleIncomingTrainsition"/>
27 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.SynchronizedRegionsAreNotSiblings"/>
28 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.child"/>
29 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.SynchronizedRegionDoesNotHaveMultipleRegions"/>
30 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.hasMultipleRegions"/>
31 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.synchThree"/>
32 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.twoSynch"/>
33 </group>
34 </extension>
6 <extension id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated" point="org.eclipse.viatra.query.runtime.queryspecification"> 35 <extension id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated" point="org.eclipse.viatra.query.runtime.queryspecification">
7 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated" id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated"> 36 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated" id="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.Mutated">
8 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.entryInRegion_M0"/> 37 <query-specification fqn="hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.entryInRegion_M0"/>
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/xtend-gen/ca/mcgill/ecse/dslreasoner/ide/.VampireLanguageIdeModule.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/xtend-gen/ca/mcgill/ecse/dslreasoner/ide/.VampireLanguageIdeModule.xtendbin
index 024dcab9..10495630 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/xtend-gen/ca/mcgill/ecse/dslreasoner/ide/.VampireLanguageIdeModule.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/xtend-gen/ca/mcgill/ecse/dslreasoner/ide/.VampireLanguageIdeModule.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/xtend-gen/ca/mcgill/ecse/dslreasoner/ide/.VampireLanguageIdeSetup.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/xtend-gen/ca/mcgill/ecse/dslreasoner/ide/.VampireLanguageIdeSetup.xtendbin
index 7e128ad1..295d9ec2 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/xtend-gen/ca/mcgill/ecse/dslreasoner/ide/.VampireLanguageIdeSetup.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/xtend-gen/ca/mcgill/ecse/dslreasoner/ide/.VampireLanguageIdeSetup.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/.VampireLanguageUiModule.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/.VampireLanguageUiModule.xtendbin
index 0bf8ccc6..83b00f77 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/.VampireLanguageUiModule.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/.VampireLanguageUiModule.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/contentassist/.VampireLanguageProposalProvider.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/contentassist/.VampireLanguageProposalProvider.xtendbin
index 58a18bbb..f8a7a2f3 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/contentassist/.VampireLanguageProposalProvider.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/contentassist/.VampireLanguageProposalProvider.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/labeling/.VampireLanguageDescriptionLabelProvider.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/labeling/.VampireLanguageDescriptionLabelProvider.xtendbin
index 205afcc4..544f5811 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/labeling/.VampireLanguageDescriptionLabelProvider.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/labeling/.VampireLanguageDescriptionLabelProvider.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/labeling/.VampireLanguageLabelProvider.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/labeling/.VampireLanguageLabelProvider.xtendbin
index b388bd43..62aac4ca 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/labeling/.VampireLanguageLabelProvider.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/labeling/.VampireLanguageLabelProvider.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/outline/.VampireLanguageOutlineTreeProvider.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/outline/.VampireLanguageOutlineTreeProvider.xtendbin
index 3092be97..31d4543e 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/outline/.VampireLanguageOutlineTreeProvider.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/outline/.VampireLanguageOutlineTreeProvider.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/quickfix/.VampireLanguageQuickfixProvider.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/quickfix/.VampireLanguageQuickfixProvider.xtendbin
index 8b23f34d..7b230b65 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/quickfix/.VampireLanguageQuickfixProvider.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/xtend-gen/ca/mcgill/ecse/dslreasoner/ui/quickfix/.VampireLanguageQuickfixProvider.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/.VampireLanguageRuntimeModule.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/.VampireLanguageRuntimeModule.xtendbin
index 84682c47..a24c2795 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/.VampireLanguageRuntimeModule.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/.VampireLanguageRuntimeModule.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/.VampireLanguageStandaloneSetup.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/.VampireLanguageStandaloneSetup.xtendbin
index e3f67a0c..b35605ae 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/.VampireLanguageStandaloneSetup.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/.VampireLanguageStandaloneSetup.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/formatting2/.VampireLanguageFormatter.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/formatting2/.VampireLanguageFormatter.xtendbin
index bf354098..5e9cd3bd 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/formatting2/.VampireLanguageFormatter.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/formatting2/.VampireLanguageFormatter.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/generator/.VampireLanguageGenerator.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/generator/.VampireLanguageGenerator.xtendbin
index da62f4c1..0001d80f 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/generator/.VampireLanguageGenerator.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/generator/.VampireLanguageGenerator.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/scoping/.VampireLanguageScopeProvider.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/scoping/.VampireLanguageScopeProvider.xtendbin
index 482b884e..b189414a 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/scoping/.VampireLanguageScopeProvider.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/scoping/.VampireLanguageScopeProvider.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/validation/.VampireLanguageValidator.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/validation/.VampireLanguageValidator.xtendbin
index 81c1f803..b4eec95c 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/validation/.VampireLanguageValidator.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/xtend-gen/ca/mcgill/ecse/dslreasoner/validation/.VampireLanguageValidator.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend
index 395b4305..8e0e0b11 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend
@@ -39,7 +39,15 @@ class Logic2VampireLanguageMapper_ContainmentMapper {
39 for (l : relationsList) { 39 for (l : relationsList) {
40 var pointingTo = (l.parameters.get(1) as ComplexTypeReference).referred as Type 40 var pointingTo = (l.parameters.get(1) as ComplexTypeReference).referred as Type
41 containmentListCopy.remove(pointingTo) 41 containmentListCopy.remove(pointingTo)
42 for (c : pointingTo.subtypes) { 42 var List<Type> allSubtypes = newArrayList
43 support.listSubtypes(pointingTo, allSubtypes)
44 for (c : allSubtypes) {
45 containmentListCopy.remove(c)
46 }
47 }
48
49 for (c : containmentListCopy) {
50 if(c.isIsAbstract) {
43 containmentListCopy.remove(c) 51 containmentListCopy.remove(c)
44 } 52 }
45 } 53 }
@@ -135,7 +143,7 @@ class Logic2VampireLanguageMapper_ContainmentMapper {
135// STEP 2 CONT'D 143// STEP 2 CONT'D
136 for (e : type2cont.entrySet) { 144 for (e : type2cont.entrySet) {
137 val relFormula = createVLSFofFormula => [ 145 val relFormula = createVLSFofFormula => [
138 it.name = support.toIDMultiple("containment", e.key.constant.toString) 146 it.name = support.toIDMultiple("containment_contained", e.key.constant.toString)
139 it.fofRole = "axiom" 147 it.fofRole = "axiom"
140 148
141 it.fofFormula = createVLSUniversalQuantifier => [ 149 it.fofFormula = createVLSUniversalQuantifier => [
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend
index 0ae06bc3..2dec281d 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend
@@ -44,9 +44,20 @@ class Logic2VampireLanguageMapper_RelationMapper {
44 44
45 } 45 }
46 46
47 //deciding name of relation
48 val nameArray = r.name.split(" ")
49 var relNameVar = ""
50 if (nameArray.length == 3) {
51 relNameVar = support.toIDMultiple(nameArray.get(0), nameArray.get(2))
52 }
53 else {
54 relNameVar = r.name
55 }
56 val relName = relNameVar
57
47 val comply = createVLSFofFormula=> [ 58 val comply = createVLSFofFormula=> [
48 val nameArray = r.name.split(" ") 59
49 it.name = support.toIDMultiple("compliance", nameArray.get(0), nameArray.get(2)) 60 it.name = support.toIDMultiple("compliance", relName)
50 it.fofRole = "axiom" 61 it.fofRole = "axiom"
51 it.fofFormula = createVLSUniversalQuantifier => [ 62 it.fofFormula = createVLSUniversalQuantifier => [
52 for (v : relVar2VLS) { 63 for (v : relVar2VLS) {
@@ -54,7 +65,7 @@ class Logic2VampireLanguageMapper_RelationMapper {
54 } 65 }
55 it.operand = createVLSImplies => [ 66 it.operand = createVLSImplies => [
56 val rel = createVLSFunction => [ 67 val rel = createVLSFunction => [
57 it.constant = support.toIDMultiple("r", nameArray.get(0), nameArray.get(2)) 68 it.constant = support.toIDMultiple("r", relName)
58 for (v : relVar2VLS) { 69 for (v : relVar2VLS) {
59 it.terms += support.duplicate(v) 70 it.terms += support.duplicate(v)
60 } 71 }
@@ -71,89 +82,89 @@ class Logic2VampireLanguageMapper_RelationMapper {
71 82
72 def dispatch public void transformRelation(RelationDefinition reldef, Logic2VampireLanguageMapperTrace trace) { 83 def dispatch public void transformRelation(RelationDefinition reldef, Logic2VampireLanguageMapperTrace trace) {
73 84
74 // 1. store all variables in support wrt their name 85// // 1. store all variables in support wrt their name
75 // 1.1 if variable has type, creating list of type declarations 86// // 1.1 if variable has type, creating list of type declarations
76// val VLSVariable variable = createVLSVariable => [it.name = "A"] 87//// val VLSVariable variable = createVLSVariable => [it.name = "A"]
77 val Map<Variable, VLSVariable> relationVar2VLS = new HashMap 88// val Map<Variable, VLSVariable> relationVar2VLS = new HashMap
78 val Map<Variable, VLSFunction> relationVar2TypeDecComply = new HashMap 89// val Map<Variable, VLSFunction> relationVar2TypeDecComply = new HashMap
79 val Map<Variable, VLSFunction> relationVar2TypeDecRes = new HashMap 90// val Map<Variable, VLSFunction> relationVar2TypeDecRes = new HashMap
80 val typedefs = new ArrayList<VLSTerm> 91// val typedefs = new ArrayList<VLSTerm>
81 92//
82 for (variable : reldef.variables) { 93// for (variable : reldef.variables) {
83 val v = createVLSVariable => [ 94// val v = createVLSVariable => [
84 it.name = support.toIDMultiple("V", variable.name) 95// it.name = support.toIDMultiple("V", variable.name)
85 ] 96// ]
86 relationVar2VLS.put(variable, v) 97// relationVar2VLS.put(variable, v)
87 98//
88 val varTypeComply = createVLSFunction => [ 99// val varTypeComply = createVLSFunction => [
89 it.constant = support.toIDMultiple("t", (variable.range as ComplexTypeReference).referred.name) 100// it.constant = support.toIDMultiple("t", (variable.range as ComplexTypeReference).referred.name)
90 it.terms += support.duplicate(v) 101// it.terms += support.duplicate(v)
91 ] 102// ]
92 relationVar2TypeDecComply.put(variable, varTypeComply) 103// relationVar2TypeDecComply.put(variable, varTypeComply)
93 relationVar2TypeDecRes.put(variable, support.duplicate(varTypeComply)) 104// relationVar2TypeDecRes.put(variable, support.duplicate(varTypeComply))
94 } 105// }
95 val nameArray = reldef.name.split(" ") 106// val nameArray = reldef.name.split(" ")
96 val comply = createVLSFofFormula => [ 107// val comply = createVLSFofFormula => [
97 it.name = support.toIDMultiple("compliance", nameArray.get(nameArray.length - 2), 108// it.name = support.toIDMultiple("compliance", nameArray.get(nameArray.length - 2),
98 nameArray.get(nameArray.length - 1)) 109// nameArray.get(nameArray.length - 1))
99 it.fofRole = "axiom" 110// it.fofRole = "axiom"
100 it.fofFormula = createVLSUniversalQuantifier => [ 111// it.fofFormula = createVLSUniversalQuantifier => [
101 for (variable : reldef.variables) { 112// for (variable : reldef.variables) {
102 it.variables += support.duplicate(variable.lookup(relationVar2VLS)) 113// it.variables += support.duplicate(variable.lookup(relationVar2VLS))
103 114//
104 } 115// }
105 it.operand = createVLSImplies => [ 116// it.operand = createVLSImplies => [
106 it.left = createVLSFunction => [ 117// it.left = createVLSFunction => [
107 it.constant = support.toIDMultiple("rel", reldef.name) 118// it.constant = support.toIDMultiple("rel", reldef.name)
108 for (variable : reldef.variables) { 119// for (variable : reldef.variables) {
109 val v = createVLSVariable => [ 120// val v = createVLSVariable => [
110 it.name = variable.lookup(relationVar2VLS).name 121// it.name = variable.lookup(relationVar2VLS).name
111 ] 122// ]
112 it.terms += v 123// it.terms += v
113 } 124// }
114 ] 125// ]
115 it.right = support.unfoldAnd(new ArrayList<VLSTerm>(relationVar2TypeDecComply.values)) 126// it.right = support.unfoldAnd(new ArrayList<VLSTerm>(relationVar2TypeDecComply.values))
116 ] 127// ]
117 ] 128// ]
118 ] 129// ]
119 130//
120 val res = createVLSFofFormula => [ 131// val res = createVLSFofFormula => [
121 it.name = support.toIDMultiple("relation", nameArray.get(nameArray.length - 2), 132// it.name = support.toIDMultiple("relation", nameArray.get(nameArray.length - 2),
122 nameArray.get(nameArray.length - 1)) 133// nameArray.get(nameArray.length - 1))
123 it.fofRole = "axiom" 134// it.fofRole = "axiom"
124 it.fofFormula = createVLSUniversalQuantifier => [ 135// it.fofFormula = createVLSUniversalQuantifier => [
125 for (variable : reldef.variables) { 136// for (variable : reldef.variables) {
126 val v = createVLSVariable => [ 137// val v = createVLSVariable => [
127 it.name = variable.lookup(relationVar2VLS).name 138// it.name = variable.lookup(relationVar2VLS).name
128 ] 139// ]
129 it.variables += v 140// it.variables += v
130 141//
131 } 142// }
132 it.operand = createVLSImplies => [ 143// it.operand = createVLSImplies => [
133 it.left = support.unfoldAnd(new ArrayList<VLSTerm>(relationVar2TypeDecRes.values)) 144// it.left = support.unfoldAnd(new ArrayList<VLSTerm>(relationVar2TypeDecRes.values))
134 it.right = createVLSEquivalent => [ 145// it.right = createVLSEquivalent => [
135 it.left = createVLSFunction => [ 146// it.left = createVLSFunction => [
136 it.constant = support.toIDMultiple("rel", reldef.name) 147// it.constant = support.toIDMultiple("rel", reldef.name)
137 for (variable : reldef.variables) { 148// for (variable : reldef.variables) {
138 val v = createVLSVariable => [ 149// val v = createVLSVariable => [
139 it.name = variable.lookup(relationVar2VLS).name 150// it.name = variable.lookup(relationVar2VLS).name
140 ] 151// ]
141 it.terms += v 152// it.terms += v
142 153//
143 } 154// }
144 ] 155// ]
145 it.right = base.transformTerm(reldef.value, trace, relationVar2VLS) 156// it.right = base.transformTerm(reldef.value, trace, relationVar2VLS)
146 ] 157// ]
147 158//
148 ] 159// ]
149 160//
150 ] 161// ]
151 162//
152 ] 163// ]
153 164//
154 // trace.relationDefinition2Predicate.put(r,res) 165// // trace.relationDefinition2Predicate.put(r,res)
155 trace.specification.formulas += comply; 166// trace.specification.formulas += comply;
156 trace.specification.formulas += res; 167// trace.specification.formulas += res;
157 168
158 } 169 }
159 170
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend
index 0a8812e4..4a8d2827 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend
@@ -29,6 +29,7 @@ class Logic2VampireLanguageMapper_ScopeMapper {
29// TODO HANDLE ERROR RELATED TO SUM(MIN TYPES)+1(for root) > MAX OBJECTS 29// TODO HANDLE ERROR RELATED TO SUM(MIN TYPES)+1(for root) > MAX OBJECTS
30// TODO HANDLE 30// TODO HANDLE
31 // 1. make a list of constants equaling the min number of specified objects 31 // 1. make a list of constants equaling the min number of specified objects
32 //These numbers do not include enums or initial model elements
32 val GLOBAL_MIN = config.typeScopes.minNewElements 33 val GLOBAL_MIN = config.typeScopes.minNewElements
33 val GLOBAL_MAX = config.typeScopes.maxNewElements 34 val GLOBAL_MAX = config.typeScopes.maxNewElements
34 35
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
index 195b89bb..680213ab 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
@@ -273,15 +273,11 @@ class Logic2VampireLanguageMapper_Support {
273 } 273 }
274 } 274 }
275 275
276 def protected List<Type> listSubtypes(Type t) { 276 def protected void listSubtypes(Type t, List<Type> allSubtypes) {
277 var List<Type> allSubtypes = newArrayList 277 for (subt : t.subtypes) {
278 if (!t.subtypes.isEmpty) { 278 allSubtypes.add(subt)
279 for (subt : t.subtypes) { 279 listSubtypes(subt, allSubtypes)
280 allSubtypes.add(subt)
281 allSubtypes = listSubtypes(subt)
282 }
283 } 280 }
284 return allSubtypes
285 } 281 }
286 282
287 def protected withAddition(Map<Variable, VLSVariable> map1, Map<Variable, VLSVariable> map2) { 283 def protected withAddition(Map<Variable, VLSVariable> map1, Map<Variable, VLSVariable> map2) {
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend
index 3bc945df..2f3af593 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend
@@ -44,14 +44,19 @@ class Logic2VampireLanguageMapper_TypeMapper {
44 44
45 // Create a VLSFunction for each Enum Element 45 // Create a VLSFunction for each Enum Element
46 val List<VLSFunction> orElems = newArrayList 46 val List<VLSFunction> orElems = newArrayList
47
47 for (e : type.elements) { 48 for (e : type.elements) {
49 val nameArray = e.name.split(" ")
50 var relNameVar = ""
51 if (nameArray.length == 3) {
52 relNameVar = support.toIDMultiple(nameArray.get(0), nameArray.get(2))
53 } else {
54 relNameVar = e.name
55 }
56 val relName = relNameVar
57
48 val enumElemPred = createVLSFunction => [ 58 val enumElemPred = createVLSFunction => [
49 val splitName = e.name.split(" ") 59 it.constant = support.toIDMultiple("e", relName)
50 if (splitName.length > 2) {
51 it.constant = support.toIDMultiple("e", splitName.get(0), splitName.get(2))
52 } else {
53 it.constant = support.toIDMultiple("e", splitName.get(0))
54 }
55 it.terms += support.duplicate(variable) 60 it.terms += support.duplicate(variable)
56 ] 61 ]
57 trace.element2Predicate.put(e, enumElemPred) 62 trace.element2Predicate.put(e, enumElemPred)
@@ -80,7 +85,7 @@ class Logic2VampireLanguageMapper_TypeMapper {
80 85
81 // Implement Enum Inheritence Hierarchy 86 // Implement Enum Inheritence Hierarchy
82 val res = createVLSFofFormula => [ 87 val res = createVLSFofFormula => [
83 it.name = support.toIDMultiple("typeDef", type.name.split(" ").get(0)) 88 it.name = support.toIDMultiple("typeDef", type.lookup(trace.type2Predicate).constant.toString)
84 it.fofRole = "axiom" 89 it.fofRole = "axiom"
85 it.fofFormula = createVLSUniversalQuantifier => [ 90 it.fofFormula = createVLSUniversalQuantifier => [
86 it.variables += support.duplicate(variable) 91 it.variables += support.duplicate(variable)
@@ -105,9 +110,9 @@ class Logic2VampireLanguageMapper_TypeMapper {
105 val cst = support.toConstant(cstTerm) 110 val cst = support.toConstant(cstTerm)
106 trace.uniqueInstances.add(cst) 111 trace.uniqueInstances.add(cst)
107 112
108 val index = i 113 val index = i-globalCounter
109 val enumScope = createVLSFofFormula => [ 114 val enumScope = createVLSFofFormula => [
110 it.name = support.toIDMultiple("enumScope", type.name.split(" ").get(0), 115 it.name = support.toIDMultiple("enumScope", type.lookup(trace.type2Predicate).constant.toString,
111 type.elements.get(index).name.split(" ").get(0)) 116 type.elements.get(index).name.split(" ").get(0))
112 it.fofRole = "axiom" 117 it.fofRole = "axiom"
113 it.fofFormula = createVLSUniversalQuantifier => [ 118 it.fofFormula = createVLSUniversalQuantifier => [
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireAnalyzerConfiguration.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireAnalyzerConfiguration.xtendbin
index 43e1e477..1ea7e30a 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireAnalyzerConfiguration.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireAnalyzerConfiguration.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbin
index 4e6f6ca0..ee06cb39 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbin
index 707a6089..648d9600 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbin
index 3171324f..a02821a5 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ConstantMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ConstantMapper.xtendbin
index 301df7fa..b01f92a6 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ConstantMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ConstantMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ContainmentMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ContainmentMapper.xtendbin
index 5e53ea26..7634af4b 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ContainmentMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ContainmentMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_RelationMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_RelationMapper.xtendbin
index b378ed09..4906adfc 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_RelationMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_RelationMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbin
index 605ac88c..e2c945e3 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbin
index 0c289e29..f465506c 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbin
index cb72fd90..e046604a 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Vampire2LogicMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Vampire2LogicMapper.xtendbin
index cfe1e8cd..aff62dca 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Vampire2LogicMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Vampire2LogicMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbin
index c2079147..7212cce7 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation.xtendbin
index 3c70bc14..d23bacad 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtendbin
index 9ef20b23..be78cace 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.java
index 4cdc7e6a..9deab87f 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.java
@@ -64,12 +64,19 @@ public class Logic2VampireLanguageMapper_ContainmentMapper {
64 Type _referred = ((ComplexTypeReference) _get).getReferred(); 64 Type _referred = ((ComplexTypeReference) _get).getReferred();
65 Type pointingTo = ((Type) _referred); 65 Type pointingTo = ((Type) _referred);
66 containmentListCopy.remove(pointingTo); 66 containmentListCopy.remove(pointingTo);
67 EList<Type> _subtypes = pointingTo.getSubtypes(); 67 List<Type> allSubtypes = CollectionLiterals.<Type>newArrayList();
68 for (final Type c : _subtypes) { 68 this.support.listSubtypes(pointingTo, allSubtypes);
69 for (final Type c : allSubtypes) {
69 containmentListCopy.remove(c); 70 containmentListCopy.remove(c);
70 } 71 }
71 } 72 }
72 } 73 }
74 for (final Type c : containmentListCopy) {
75 boolean _isIsAbstract = c.isIsAbstract();
76 if (_isIsAbstract) {
77 containmentListCopy.remove(c);
78 }
79 }
73 final String topName = CollectionsUtil.<Type, VLSFunction>lookup(containmentListCopy.get(0), trace.type2Predicate).getConstant().toString(); 80 final String topName = CollectionsUtil.<Type, VLSFunction>lookup(containmentListCopy.get(0), trace.type2Predicate).getConstant().toString();
74 final VLSFunction topTerm = this.support.duplicate(CollectionsUtil.<Type, VLSFunction>lookup(containmentListCopy.get(0), trace.type2Predicate)); 81 final VLSFunction topTerm = this.support.duplicate(CollectionsUtil.<Type, VLSFunction>lookup(containmentListCopy.get(0), trace.type2Predicate));
75 VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula(); 82 VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula();
@@ -132,7 +139,7 @@ public class Logic2VampireLanguageMapper_ContainmentMapper {
132 final VLSFunction toFunc = CollectionsUtil.<Type, VLSFunction>lookup(toType, trace.type2Predicate); 139 final VLSFunction toFunc = CollectionsUtil.<Type, VLSFunction>lookup(toType, trace.type2Predicate);
133 this.addToMap(type2cont, toFunc, rel); 140 this.addToMap(type2cont, toFunc, rel);
134 EList<Type> _subtypes = toType.getSubtypes(); 141 EList<Type> _subtypes = toType.getSubtypes();
135 for (final Type c : _subtypes) { 142 for (final Type c_1 : _subtypes) {
136 this.addToMap(type2cont, toFunc, rel); 143 this.addToMap(type2cont, toFunc, rel);
137 } 144 }
138 VLSFofFormula _createVLSFofFormula_1 = this.factory.createVLSFofFormula(); 145 VLSFofFormula _createVLSFofFormula_1 = this.factory.createVLSFofFormula();
@@ -184,7 +191,7 @@ public class Logic2VampireLanguageMapper_ContainmentMapper {
184 { 191 {
185 VLSFofFormula _createVLSFofFormula_1 = this.factory.createVLSFofFormula(); 192 VLSFofFormula _createVLSFofFormula_1 = this.factory.createVLSFofFormula();
186 final Procedure1<VLSFofFormula> _function_4 = (VLSFofFormula it) -> { 193 final Procedure1<VLSFofFormula> _function_4 = (VLSFofFormula it) -> {
187 it.setName(this.support.toIDMultiple("containment", e.getKey().getConstant().toString())); 194 it.setName(this.support.toIDMultiple("containment_contained", e.getKey().getConstant().toString()));
188 it.setFofRole("axiom"); 195 it.setFofRole("axiom");
189 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 196 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
190 final Procedure1<VLSUniversalQuantifier> _function_5 = (VLSUniversalQuantifier it_1) -> { 197 final Procedure1<VLSUniversalQuantifier> _function_5 = (VLSUniversalQuantifier it_1) -> {
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java
index d5745333..c6565f6a 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java
@@ -3,7 +3,6 @@ package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder;
3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper; 3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper;
4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapperTrace; 4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapperTrace;
5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_Support; 5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_Support;
6import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent;
7import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula; 6import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula;
8import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction; 7import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction;
9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies; 8import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies;
@@ -17,14 +16,10 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration;
17import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition; 16import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition;
18import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; 17import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type;
19import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeReference; 18import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeReference;
20import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable;
21import hu.bme.mit.inf.dslreasoner.util.CollectionsUtil; 19import hu.bme.mit.inf.dslreasoner.util.CollectionsUtil;
22import java.util.ArrayList; 20import java.util.ArrayList;
23import java.util.Arrays; 21import java.util.Arrays;
24import java.util.Collection;
25import java.util.HashMap;
26import java.util.List; 22import java.util.List;
27import java.util.Map;
28import org.eclipse.emf.common.util.EList; 23import org.eclipse.emf.common.util.EList;
29import org.eclipse.xtext.xbase.lib.Conversions; 24import org.eclipse.xtext.xbase.lib.Conversions;
30import org.eclipse.xtext.xbase.lib.ExclusiveRange; 25import org.eclipse.xtext.xbase.lib.ExclusiveRange;
@@ -64,10 +59,19 @@ public class Logic2VampireLanguageMapper_RelationMapper {
64 relVar2TypeDecComply.add(varTypeComply); 59 relVar2TypeDecComply.add(varTypeComply);
65 } 60 }
66 } 61 }
62 final String[] nameArray = r.getName().split(" ");
63 String relNameVar = "";
64 int _length_1 = nameArray.length;
65 boolean _equals = (_length_1 == 3);
66 if (_equals) {
67 relNameVar = this.support.toIDMultiple(nameArray[0], nameArray[2]);
68 } else {
69 relNameVar = r.getName();
70 }
71 final String relName = relNameVar;
67 VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula(); 72 VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula();
68 final Procedure1<VLSFofFormula> _function = (VLSFofFormula it) -> { 73 final Procedure1<VLSFofFormula> _function = (VLSFofFormula it) -> {
69 final String[] nameArray = r.getName().split(" "); 74 it.setName(this.support.toIDMultiple("compliance", relName));
70 it.setName(this.support.toIDMultiple("compliance", nameArray[0], nameArray[2]));
71 it.setFofRole("axiom"); 75 it.setFofRole("axiom");
72 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 76 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
73 final Procedure1<VLSUniversalQuantifier> _function_1 = (VLSUniversalQuantifier it_1) -> { 77 final Procedure1<VLSUniversalQuantifier> _function_1 = (VLSUniversalQuantifier it_1) -> {
@@ -80,7 +84,7 @@ public class Logic2VampireLanguageMapper_RelationMapper {
80 final Procedure1<VLSImplies> _function_2 = (VLSImplies it_2) -> { 84 final Procedure1<VLSImplies> _function_2 = (VLSImplies it_2) -> {
81 VLSFunction _createVLSFunction = this.factory.createVLSFunction(); 85 VLSFunction _createVLSFunction = this.factory.createVLSFunction();
82 final Procedure1<VLSFunction> _function_3 = (VLSFunction it_3) -> { 86 final Procedure1<VLSFunction> _function_3 = (VLSFunction it_3) -> {
83 it_3.setConstant(this.support.toIDMultiple("r", nameArray[0], nameArray[2])); 87 it_3.setConstant(this.support.toIDMultiple("r", relName));
84 for (final VLSVariable v_1 : relVar2VLS) { 88 for (final VLSVariable v_1 : relVar2VLS) {
85 EList<VLSTerm> _terms = it_3.getTerms(); 89 EList<VLSTerm> _terms = it_3.getTerms();
86 VLSVariable _duplicate_1 = this.support.duplicate(v_1); 90 VLSVariable _duplicate_1 = this.support.duplicate(v_1);
@@ -104,145 +108,6 @@ public class Logic2VampireLanguageMapper_RelationMapper {
104 } 108 }
105 109
106 public void _transformRelation(final RelationDefinition reldef, final Logic2VampireLanguageMapperTrace trace) { 110 public void _transformRelation(final RelationDefinition reldef, final Logic2VampireLanguageMapperTrace trace) {
107 final Map<Variable, VLSVariable> relationVar2VLS = new HashMap<Variable, VLSVariable>();
108 final Map<Variable, VLSFunction> relationVar2TypeDecComply = new HashMap<Variable, VLSFunction>();
109 final Map<Variable, VLSFunction> relationVar2TypeDecRes = new HashMap<Variable, VLSFunction>();
110 final ArrayList<VLSTerm> typedefs = new ArrayList<VLSTerm>();
111 EList<Variable> _variables = reldef.getVariables();
112 for (final Variable variable : _variables) {
113 {
114 VLSVariable _createVLSVariable = this.factory.createVLSVariable();
115 final Procedure1<VLSVariable> _function = (VLSVariable it) -> {
116 it.setName(this.support.toIDMultiple("V", variable.getName()));
117 };
118 final VLSVariable v = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable, _function);
119 relationVar2VLS.put(variable, v);
120 VLSFunction _createVLSFunction = this.factory.createVLSFunction();
121 final Procedure1<VLSFunction> _function_1 = (VLSFunction it) -> {
122 TypeReference _range = variable.getRange();
123 it.setConstant(this.support.toIDMultiple("t", ((ComplexTypeReference) _range).getReferred().getName()));
124 EList<VLSTerm> _terms = it.getTerms();
125 VLSVariable _duplicate = this.support.duplicate(v);
126 _terms.add(_duplicate);
127 };
128 final VLSFunction varTypeComply = ObjectExtensions.<VLSFunction>operator_doubleArrow(_createVLSFunction, _function_1);
129 relationVar2TypeDecComply.put(variable, varTypeComply);
130 relationVar2TypeDecRes.put(variable, this.support.duplicate(varTypeComply));
131 }
132 }
133 final String[] nameArray = reldef.getName().split(" ");
134 VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula();
135 final Procedure1<VLSFofFormula> _function = (VLSFofFormula it) -> {
136 int _length = nameArray.length;
137 int _minus = (_length - 2);
138 int _length_1 = nameArray.length;
139 int _minus_1 = (_length_1 - 1);
140 it.setName(this.support.toIDMultiple("compliance", nameArray[_minus],
141 nameArray[_minus_1]));
142 it.setFofRole("axiom");
143 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
144 final Procedure1<VLSUniversalQuantifier> _function_1 = (VLSUniversalQuantifier it_1) -> {
145 EList<Variable> _variables_1 = reldef.getVariables();
146 for (final Variable variable_1 : _variables_1) {
147 EList<VLSVariable> _variables_2 = it_1.getVariables();
148 VLSVariable _duplicate = this.support.duplicate(CollectionsUtil.<Variable, VLSVariable>lookup(variable_1, relationVar2VLS));
149 _variables_2.add(_duplicate);
150 }
151 VLSImplies _createVLSImplies = this.factory.createVLSImplies();
152 final Procedure1<VLSImplies> _function_2 = (VLSImplies it_2) -> {
153 VLSFunction _createVLSFunction = this.factory.createVLSFunction();
154 final Procedure1<VLSFunction> _function_3 = (VLSFunction it_3) -> {
155 it_3.setConstant(this.support.toIDMultiple("rel", reldef.getName()));
156 EList<Variable> _variables_3 = reldef.getVariables();
157 for (final Variable variable_2 : _variables_3) {
158 {
159 VLSVariable _createVLSVariable = this.factory.createVLSVariable();
160 final Procedure1<VLSVariable> _function_4 = (VLSVariable it_4) -> {
161 it_4.setName(CollectionsUtil.<Variable, VLSVariable>lookup(variable_2, relationVar2VLS).getName());
162 };
163 final VLSVariable v = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable, _function_4);
164 EList<VLSTerm> _terms = it_3.getTerms();
165 _terms.add(v);
166 }
167 }
168 };
169 VLSFunction _doubleArrow = ObjectExtensions.<VLSFunction>operator_doubleArrow(_createVLSFunction, _function_3);
170 it_2.setLeft(_doubleArrow);
171 Collection<VLSFunction> _values = relationVar2TypeDecComply.values();
172 ArrayList<VLSTerm> _arrayList = new ArrayList<VLSTerm>(_values);
173 it_2.setRight(this.support.unfoldAnd(_arrayList));
174 };
175 VLSImplies _doubleArrow = ObjectExtensions.<VLSImplies>operator_doubleArrow(_createVLSImplies, _function_2);
176 it_1.setOperand(_doubleArrow);
177 };
178 VLSUniversalQuantifier _doubleArrow = ObjectExtensions.<VLSUniversalQuantifier>operator_doubleArrow(_createVLSUniversalQuantifier, _function_1);
179 it.setFofFormula(_doubleArrow);
180 };
181 final VLSFofFormula comply = ObjectExtensions.<VLSFofFormula>operator_doubleArrow(_createVLSFofFormula, _function);
182 VLSFofFormula _createVLSFofFormula_1 = this.factory.createVLSFofFormula();
183 final Procedure1<VLSFofFormula> _function_1 = (VLSFofFormula it) -> {
184 int _length = nameArray.length;
185 int _minus = (_length - 2);
186 int _length_1 = nameArray.length;
187 int _minus_1 = (_length_1 - 1);
188 it.setName(this.support.toIDMultiple("relation", nameArray[_minus],
189 nameArray[_minus_1]));
190 it.setFofRole("axiom");
191 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
192 final Procedure1<VLSUniversalQuantifier> _function_2 = (VLSUniversalQuantifier it_1) -> {
193 EList<Variable> _variables_1 = reldef.getVariables();
194 for (final Variable variable_1 : _variables_1) {
195 {
196 VLSVariable _createVLSVariable = this.factory.createVLSVariable();
197 final Procedure1<VLSVariable> _function_3 = (VLSVariable it_2) -> {
198 it_2.setName(CollectionsUtil.<Variable, VLSVariable>lookup(variable_1, relationVar2VLS).getName());
199 };
200 final VLSVariable v = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable, _function_3);
201 EList<VLSVariable> _variables_2 = it_1.getVariables();
202 _variables_2.add(v);
203 }
204 }
205 VLSImplies _createVLSImplies = this.factory.createVLSImplies();
206 final Procedure1<VLSImplies> _function_3 = (VLSImplies it_2) -> {
207 Collection<VLSFunction> _values = relationVar2TypeDecRes.values();
208 ArrayList<VLSTerm> _arrayList = new ArrayList<VLSTerm>(_values);
209 it_2.setLeft(this.support.unfoldAnd(_arrayList));
210 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent();
211 final Procedure1<VLSEquivalent> _function_4 = (VLSEquivalent it_3) -> {
212 VLSFunction _createVLSFunction = this.factory.createVLSFunction();
213 final Procedure1<VLSFunction> _function_5 = (VLSFunction it_4) -> {
214 it_4.setConstant(this.support.toIDMultiple("rel", reldef.getName()));
215 EList<Variable> _variables_2 = reldef.getVariables();
216 for (final Variable variable_2 : _variables_2) {
217 {
218 VLSVariable _createVLSVariable = this.factory.createVLSVariable();
219 final Procedure1<VLSVariable> _function_6 = (VLSVariable it_5) -> {
220 it_5.setName(CollectionsUtil.<Variable, VLSVariable>lookup(variable_2, relationVar2VLS).getName());
221 };
222 final VLSVariable v = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable, _function_6);
223 EList<VLSTerm> _terms = it_4.getTerms();
224 _terms.add(v);
225 }
226 }
227 };
228 VLSFunction _doubleArrow = ObjectExtensions.<VLSFunction>operator_doubleArrow(_createVLSFunction, _function_5);
229 it_3.setLeft(_doubleArrow);
230 it_3.setRight(this.base.transformTerm(reldef.getValue(), trace, relationVar2VLS));
231 };
232 VLSEquivalent _doubleArrow = ObjectExtensions.<VLSEquivalent>operator_doubleArrow(_createVLSEquivalent, _function_4);
233 it_2.setRight(_doubleArrow);
234 };
235 VLSImplies _doubleArrow = ObjectExtensions.<VLSImplies>operator_doubleArrow(_createVLSImplies, _function_3);
236 it_1.setOperand(_doubleArrow);
237 };
238 VLSUniversalQuantifier _doubleArrow = ObjectExtensions.<VLSUniversalQuantifier>operator_doubleArrow(_createVLSUniversalQuantifier, _function_2);
239 it.setFofFormula(_doubleArrow);
240 };
241 final VLSFofFormula res = ObjectExtensions.<VLSFofFormula>operator_doubleArrow(_createVLSFofFormula_1, _function_1);
242 EList<VLSFofFormula> _formulas = trace.specification.getFormulas();
243 _formulas.add(comply);
244 EList<VLSFofFormula> _formulas_1 = trace.specification.getFormulas();
245 _formulas_1.add(res);
246 } 111 }
247 112
248 public void transformRelation(final Relation r, final Logic2VampireLanguageMapperTrace trace) { 113 public void transformRelation(final Relation r, final Logic2VampireLanguageMapperTrace trace) {
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java
index 89633ca1..f1d73bec 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java
@@ -403,20 +403,14 @@ public class Logic2VampireLanguageMapper_Support {
403 return _xifexpression; 403 return _xifexpression;
404 } 404 }
405 405
406 protected List<Type> listSubtypes(final Type t) { 406 protected void listSubtypes(final Type t, final List<Type> allSubtypes) {
407 List<Type> allSubtypes = CollectionLiterals.<Type>newArrayList(); 407 EList<Type> _subtypes = t.getSubtypes();
408 boolean _isEmpty = t.getSubtypes().isEmpty(); 408 for (final Type subt : _subtypes) {
409 boolean _not = (!_isEmpty); 409 {
410 if (_not) { 410 allSubtypes.add(subt);
411 EList<Type> _subtypes = t.getSubtypes(); 411 this.listSubtypes(subt, allSubtypes);
412 for (final Type subt : _subtypes) {
413 {
414 allSubtypes.add(subt);
415 allSubtypes = this.listSubtypes(subt);
416 }
417 } 412 }
418 } 413 }
419 return allSubtypes;
420 } 414 }
421 415
422 protected HashMap<Variable, VLSVariable> withAddition(final Map<Variable, VLSVariable> map1, final Map<Variable, VLSVariable> map2) { 416 protected HashMap<Variable, VLSVariable> withAddition(final Map<Variable, VLSVariable> map1, final Map<Variable, VLSVariable> map2) {
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.java
index 9b8f049d..b9c1d28d 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.java
@@ -78,16 +78,19 @@ public class Logic2VampireLanguageMapper_TypeMapper {
78 EList<DefinedElement> _elements = type_1.getElements(); 78 EList<DefinedElement> _elements = type_1.getElements();
79 for (final DefinedElement e : _elements) { 79 for (final DefinedElement e : _elements) {
80 { 80 {
81 final String[] nameArray = e.getName().split(" ");
82 String relNameVar = "";
83 int _length = nameArray.length;
84 boolean _equals = (_length == 3);
85 if (_equals) {
86 relNameVar = this.support.toIDMultiple(nameArray[0], nameArray[2]);
87 } else {
88 relNameVar = e.getName();
89 }
90 final String relName = relNameVar;
81 VLSFunction _createVLSFunction = this.factory.createVLSFunction(); 91 VLSFunction _createVLSFunction = this.factory.createVLSFunction();
82 final Procedure1<VLSFunction> _function_1 = (VLSFunction it) -> { 92 final Procedure1<VLSFunction> _function_1 = (VLSFunction it) -> {
83 final String[] splitName = e.getName().split(" "); 93 it.setConstant(this.support.toIDMultiple("e", relName));
84 int _length = splitName.length;
85 boolean _greaterThan = (_length > 2);
86 if (_greaterThan) {
87 it.setConstant(this.support.toIDMultiple("e", splitName[0], splitName[2]));
88 } else {
89 it.setConstant(this.support.toIDMultiple("e", splitName[0]));
90 }
91 EList<VLSTerm> _terms = it.getTerms(); 94 EList<VLSTerm> _terms = it.getTerms();
92 VLSVariable _duplicate = this.support.duplicate(variable); 95 VLSVariable _duplicate = this.support.duplicate(variable);
93 _terms.add(_duplicate); 96 _terms.add(_duplicate);
@@ -123,7 +126,7 @@ public class Logic2VampireLanguageMapper_TypeMapper {
123 } 126 }
124 VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula(); 127 VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula();
125 final Procedure1<VLSFofFormula> _function_1 = (VLSFofFormula it) -> { 128 final Procedure1<VLSFofFormula> _function_1 = (VLSFofFormula it) -> {
126 it.setName(this.support.toIDMultiple("typeDef", type_1.getName().split(" ")[0])); 129 it.setName(this.support.toIDMultiple("typeDef", CollectionsUtil.<TypeDefinition, VLSFunction>lookup(type_1, trace.type2Predicate).getConstant().toString()));
127 it.setFofRole("axiom"); 130 it.setFofRole("axiom");
128 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 131 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
129 final Procedure1<VLSUniversalQuantifier> _function_2 = (VLSUniversalQuantifier it_1) -> { 132 final Procedure1<VLSUniversalQuantifier> _function_2 = (VLSUniversalQuantifier it_1) -> {
@@ -160,10 +163,10 @@ public class Logic2VampireLanguageMapper_TypeMapper {
160 final VLSFunctionAsTerm cstTerm = ObjectExtensions.<VLSFunctionAsTerm>operator_doubleArrow(_createVLSFunctionAsTerm, _function_2); 163 final VLSFunctionAsTerm cstTerm = ObjectExtensions.<VLSFunctionAsTerm>operator_doubleArrow(_createVLSFunctionAsTerm, _function_2);
161 final VLSConstant cst = this.support.toConstant(cstTerm); 164 final VLSConstant cst = this.support.toConstant(cstTerm);
162 trace.uniqueInstances.add(cst); 165 trace.uniqueInstances.add(cst);
163 final int index = i; 166 final int index = (i - globalCounter);
164 VLSFofFormula _createVLSFofFormula_1 = this.factory.createVLSFofFormula(); 167 VLSFofFormula _createVLSFofFormula_1 = this.factory.createVLSFofFormula();
165 final Procedure1<VLSFofFormula> _function_3 = (VLSFofFormula it) -> { 168 final Procedure1<VLSFofFormula> _function_3 = (VLSFofFormula it) -> {
166 it.setName(this.support.toIDMultiple("enumScope", type_1.getName().split(" ")[0], 169 it.setName(this.support.toIDMultiple("enumScope", CollectionsUtil.<TypeDefinition, VLSFunction>lookup(type_1, trace.type2Predicate).getConstant().toString(),
167 type_1.getElements().get(index).getName().split(" ")[0])); 170 type_1.getElements().get(index).getName().split(" ")[0]));
168 it.setFofRole("axiom"); 171 it.setFofRole("axiom");
169 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 172 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.aird b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.aird
new file mode 100644
index 00000000..50f2ba11
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.aird
@@ -0,0 +1,379 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
3 <viewpoint:DAnalysis uid="_EK7A4F8ZEem0RrbB8IXw7Q" selectedViews="_ENX38F8ZEem0RrbB8IXw7Q _ENnIgF8ZEem0RrbB8IXw7Q _ENpkwF8ZEem0RrbB8IXw7Q _EN3AIF8ZEem0RrbB8IXw7Q" version="14.1.0.201810161215">
4 <semanticResources>filesystem.ecore</semanticResources>
5 <semanticResources>filesystem.genmodel</semanticResources>
6 <ownedViews xmi:type="viewpoint:DView" uid="_ENX38F8ZEem0RrbB8IXw7Q">
7 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
8 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_ErMcYF8ZEem0RrbB8IXw7Q" name="filesystem class diagram" repPath="#_Eq7WoF8ZEem0RrbB8IXw7Q">
9 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
10 <target xmi:type="ecore:EPackage" href="filesystem.ecore#/"/>
11 </ownedRepresentationDescriptors>
12 </ownedViews>
13 <ownedViews xmi:type="viewpoint:DView" uid="_ENnIgF8ZEem0RrbB8IXw7Q">
14 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
15 </ownedViews>
16 <ownedViews xmi:type="viewpoint:DView" uid="_ENpkwF8ZEem0RrbB8IXw7Q">
17 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
18 </ownedViews>
19 <ownedViews xmi:type="viewpoint:DView" uid="_EN3AIF8ZEem0RrbB8IXw7Q">
20 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
21 </ownedViews>
22 </viewpoint:DAnalysis>
23 <diagram:DSemanticDiagram uid="_Eq7WoF8ZEem0RrbB8IXw7Q" name="filesystem class diagram">
24 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_ErHj4F8ZEem0RrbB8IXw7Q" source="DANNOTATION_CUSTOMIZATION_KEY">
25 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_ErHj4V8ZEem0RrbB8IXw7Q">
26 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_GPxNgF8ZEem0RrbB8IXw7Q" sourceArrow="FillDiamond" routingStyle="manhattan">
27 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
28 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_GPxNgV8ZEem0RrbB8IXw7Q" showIcon="false" labelExpression="service:render">
29 <labelFormat>bold</labelFormat>
30 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
31 </centerLabelStyleDescription>
32 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_GPxNgl8ZEem0RrbB8IXw7Q" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
33 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
34 </endLabelStyleDescription>
35 </computedStyleDescriptions>
36 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_GPyboF8ZEem0RrbB8IXw7Q" routingStyle="manhattan">
37 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
38 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_GPyboV8ZEem0RrbB8IXw7Q" showIcon="false" labelExpression="service:render">
39 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
40 </centerLabelStyleDescription>
41 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_GPybol8ZEem0RrbB8IXw7Q" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
42 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
43 </endLabelStyleDescription>
44 </computedStyleDescriptions>
45 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_GPzpwF8ZEem0RrbB8IXw7Q" sourceArrow="FillDiamond" routingStyle="manhattan">
46 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
47 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_GPzpwV8ZEem0RrbB8IXw7Q" showIcon="false" labelExpression="service:render">
48 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
49 </centerLabelStyleDescription>
50 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_GPzpwl8ZEem0RrbB8IXw7Q" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
51 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
52 </endLabelStyleDescription>
53 </computedStyleDescriptions>
54 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_GP3UIF8ZEem0RrbB8IXw7Q" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
55 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
56 <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_GP3UIV8ZEem0RrbB8IXw7Q" showIcon="false" labelExpression="service:renderEOpposite">
57 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
58 </beginLabelStyleDescription>
59 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_GP3UIl8ZEem0RrbB8IXw7Q" showIcon="false" labelExpression="service:render">
60 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
61 </endLabelStyleDescription>
62 </computedStyleDescriptions>
63 </data>
64 </ownedAnnotationEntries>
65 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_ErXbgF8ZEem0RrbB8IXw7Q" source="GMF_DIAGRAMS">
66 <data xmi:type="notation:Diagram" xmi:id="_ErXbgV8ZEem0RrbB8IXw7Q" type="Sirius" element="_Eq7WoF8ZEem0RrbB8IXw7Q" measurementUnit="Pixel">
67 <children xmi:type="notation:Node" xmi:id="_GP6XcF8ZEem0RrbB8IXw7Q" type="2003" element="_GPjyIF8ZEem0RrbB8IXw7Q">
68 <children xmi:type="notation:Node" xmi:id="_GP6-gF8ZEem0RrbB8IXw7Q" type="5007"/>
69 <children xmi:type="notation:Node" xmi:id="_GP7lkF8ZEem0RrbB8IXw7Q" type="7004">
70 <styles xmi:type="notation:SortingStyle" xmi:id="_GP7lkV8ZEem0RrbB8IXw7Q"/>
71 <styles xmi:type="notation:FilteringStyle" xmi:id="_GP7lkl8ZEem0RrbB8IXw7Q"/>
72 </children>
73 <styles xmi:type="notation:ShapeStyle" xmi:id="_GP6XcV8ZEem0RrbB8IXw7Q" fontName="Segoe UI" fontHeight="8"/>
74 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GP6Xcl8ZEem0RrbB8IXw7Q" x="756" y="180"/>
75 </children>
76 <children xmi:type="notation:Node" xmi:id="_GP7lk18ZEem0RrbB8IXw7Q" type="2003" element="_GPm1cF8ZEem0RrbB8IXw7Q">
77 <children xmi:type="notation:Node" xmi:id="_GP8MoF8ZEem0RrbB8IXw7Q" type="5007"/>
78 <children xmi:type="notation:Node" xmi:id="_GP8MoV8ZEem0RrbB8IXw7Q" type="7004">
79 <styles xmi:type="notation:SortingStyle" xmi:id="_GP8Mol8ZEem0RrbB8IXw7Q"/>
80 <styles xmi:type="notation:FilteringStyle" xmi:id="_GP8Mo18ZEem0RrbB8IXw7Q"/>
81 </children>
82 <styles xmi:type="notation:ShapeStyle" xmi:id="_GP7llF8ZEem0RrbB8IXw7Q" fontName="Segoe UI" fontHeight="8" italic="true"/>
83 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GP7llV8ZEem0RrbB8IXw7Q" x="1260" y="420"/>
84 </children>
85 <children xmi:type="notation:Node" xmi:id="_GP8MpF8ZEem0RrbB8IXw7Q" type="2003" element="_GPncgV8ZEem0RrbB8IXw7Q">
86 <children xmi:type="notation:Node" xmi:id="_GP8Mp18ZEem0RrbB8IXw7Q" type="5007"/>
87 <children xmi:type="notation:Node" xmi:id="_GP8MqF8ZEem0RrbB8IXw7Q" type="7004">
88 <styles xmi:type="notation:SortingStyle" xmi:id="_GP8MqV8ZEem0RrbB8IXw7Q"/>
89 <styles xmi:type="notation:FilteringStyle" xmi:id="_GP8Mql8ZEem0RrbB8IXw7Q"/>
90 </children>
91 <styles xmi:type="notation:ShapeStyle" xmi:id="_GP8MpV8ZEem0RrbB8IXw7Q" fontName="Segoe UI" fontHeight="8"/>
92 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GP8Mpl8ZEem0RrbB8IXw7Q" x="768" y="648"/>
93 </children>
94 <children xmi:type="notation:Node" xmi:id="_GP8zsF8ZEem0RrbB8IXw7Q" type="2003" element="_GPoDkV8ZEem0RrbB8IXw7Q">
95 <children xmi:type="notation:Node" xmi:id="_GP8zs18ZEem0RrbB8IXw7Q" type="5007"/>
96 <children xmi:type="notation:Node" xmi:id="_GP8ztF8ZEem0RrbB8IXw7Q" type="7004">
97 <styles xmi:type="notation:SortingStyle" xmi:id="_GP8ztV8ZEem0RrbB8IXw7Q"/>
98 <styles xmi:type="notation:FilteringStyle" xmi:id="_GP8ztl8ZEem0RrbB8IXw7Q"/>
99 </children>
100 <styles xmi:type="notation:ShapeStyle" xmi:id="_GP8zsV8ZEem0RrbB8IXw7Q" fontName="Segoe UI" fontHeight="8"/>
101 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GP8zsl8ZEem0RrbB8IXw7Q" x="1272" y="660"/>
102 </children>
103 <children xmi:type="notation:Node" xmi:id="_GP8zt18ZEem0RrbB8IXw7Q" type="2003" element="_GPoqoF8ZEem0RrbB8IXw7Q">
104 <children xmi:type="notation:Node" xmi:id="_GP9awF8ZEem0RrbB8IXw7Q" type="5007"/>
105 <children xmi:type="notation:Node" xmi:id="_GP9awV8ZEem0RrbB8IXw7Q" type="7004">
106 <styles xmi:type="notation:SortingStyle" xmi:id="_GP9awl8ZEem0RrbB8IXw7Q"/>
107 <styles xmi:type="notation:FilteringStyle" xmi:id="_GP9aw18ZEem0RrbB8IXw7Q"/>
108 </children>
109 <styles xmi:type="notation:ShapeStyle" xmi:id="_GP8zuF8ZEem0RrbB8IXw7Q" fontName="Segoe UI" fontHeight="8"/>
110 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GP8zuV8ZEem0RrbB8IXw7Q" x="972" y="24"/>
111 </children>
112 <styles xmi:type="notation:DiagramStyle" xmi:id="_ErXbgl8ZEem0RrbB8IXw7Q"/>
113 <edges xmi:type="notation:Edge" xmi:id="_GP_3AF8ZEem0RrbB8IXw7Q" type="4001" element="_GPv_YF8ZEem0RrbB8IXw7Q" source="_GP6XcF8ZEem0RrbB8IXw7Q" target="_GP8MpF8ZEem0RrbB8IXw7Q">
114 <children xmi:type="notation:Node" xmi:id="_GQBFIF8ZEem0RrbB8IXw7Q" type="6001">
115 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQBFIV8ZEem0RrbB8IXw7Q" x="-157" y="-35"/>
116 </children>
117 <children xmi:type="notation:Node" xmi:id="_GQCTQF8ZEem0RrbB8IXw7Q" type="6002">
118 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQCTQV8ZEem0RrbB8IXw7Q" x="-28"/>
119 </children>
120 <children xmi:type="notation:Node" xmi:id="_GQC6UF8ZEem0RrbB8IXw7Q" type="6003">
121 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQC6UV8ZEem0RrbB8IXw7Q" x="-205"/>
122 </children>
123 <styles xmi:type="notation:ConnectorStyle" xmi:id="_GP_3AV8ZEem0RrbB8IXw7Q" routing="Rectilinear"/>
124 <styles xmi:type="notation:FontStyle" xmi:id="_GP_3Al8ZEem0RrbB8IXw7Q" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
125 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GP_3A18ZEem0RrbB8IXw7Q" points="[-23, 98, -35, -468]$[-23, 468, -35, -98]"/>
126 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQFWkF8ZEem0RrbB8IXw7Q" id="(0.5,0.0)"/>
127 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQFWkV8ZEem0RrbB8IXw7Q" id="(0.5,1.0)"/>
128 </edges>
129 <edges xmi:type="notation:Edge" xmi:id="_GQFWkl8ZEem0RrbB8IXw7Q" type="4001" element="_GPx0kF8ZEem0RrbB8IXw7Q" source="_GP6XcF8ZEem0RrbB8IXw7Q" target="_GP7lk18ZEem0RrbB8IXw7Q">
130 <children xmi:type="notation:Node" xmi:id="_GQF9oF8ZEem0RrbB8IXw7Q" type="6001">
131 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQF9oV8ZEem0RrbB8IXw7Q" y="-10"/>
132 </children>
133 <children xmi:type="notation:Node" xmi:id="_GQF9ol8ZEem0RrbB8IXw7Q" type="6002">
134 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQF9o18ZEem0RrbB8IXw7Q" x="154" y="-10"/>
135 </children>
136 <children xmi:type="notation:Node" xmi:id="_GQF9pF8ZEem0RrbB8IXw7Q" type="6003">
137 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQF9pV8ZEem0RrbB8IXw7Q" x="10"/>
138 </children>
139 <styles xmi:type="notation:ConnectorStyle" xmi:id="_GQFWk18ZEem0RrbB8IXw7Q" routing="Rectilinear"/>
140 <styles xmi:type="notation:FontStyle" xmi:id="_GQFWlF8ZEem0RrbB8IXw7Q" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
141 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GQFWlV8ZEem0RrbB8IXw7Q" points="[59, 70, -445, -268]$[469, 70, -35, -268]$[469, 240, -35, -98]"/>
142 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQGksF8ZEem0RrbB8IXw7Q" id="(0.5,0.0)"/>
143 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQGksV8ZEem0RrbB8IXw7Q" id="(0.5,1.0)"/>
144 </edges>
145 <edges xmi:type="notation:Edge" xmi:id="_GQGksl8ZEem0RrbB8IXw7Q" type="4001" element="_GPybqV8ZEem0RrbB8IXw7Q" source="_GP8zt18ZEem0RrbB8IXw7Q" target="_GP6XcF8ZEem0RrbB8IXw7Q">
146 <children xmi:type="notation:Node" xmi:id="_GQGktl8ZEem0RrbB8IXw7Q" type="6001">
147 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQGkt18ZEem0RrbB8IXw7Q" y="10"/>
148 </children>
149 <children xmi:type="notation:Node" xmi:id="_GQHLwF8ZEem0RrbB8IXw7Q" type="6002">
150 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQHLwV8ZEem0RrbB8IXw7Q" x="51" y="146"/>
151 </children>
152 <children xmi:type="notation:Node" xmi:id="_GQHLwl8ZEem0RrbB8IXw7Q" type="6003">
153 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQHLw18ZEem0RrbB8IXw7Q" x="10"/>
154 </children>
155 <styles xmi:type="notation:ConnectorStyle" xmi:id="_GQGks18ZEem0RrbB8IXw7Q" routing="Rectilinear"/>
156 <styles xmi:type="notation:FontStyle" xmi:id="_GQGktF8ZEem0RrbB8IXw7Q" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
157 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GQGktV8ZEem0RrbB8IXw7Q" points="[-59, 59, 157, -195]$[-215, 59, 1, -195]$[-215, 156, 1, -98]"/>
158 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQHLxF8ZEem0RrbB8IXw7Q" id="(0.5,0.0)"/>
159 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQHLxV8ZEem0RrbB8IXw7Q" id="(0.5,1.0)"/>
160 </edges>
161 <edges xmi:type="notation:Edge" xmi:id="_GQHLxl8ZEem0RrbB8IXw7Q" type="4001" element="_GPzCtl8ZEem0RrbB8IXw7Q" source="_GP8zt18ZEem0RrbB8IXw7Q" target="_GP7lk18ZEem0RrbB8IXw7Q">
162 <children xmi:type="notation:Node" xmi:id="_GQHLyl8ZEem0RrbB8IXw7Q" type="6001">
163 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQHLy18ZEem0RrbB8IXw7Q" x="-57" y="25"/>
164 </children>
165 <children xmi:type="notation:Node" xmi:id="_GQHLzF8ZEem0RrbB8IXw7Q" type="6002">
166 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQHLzV8ZEem0RrbB8IXw7Q" x="67" y="10"/>
167 </children>
168 <children xmi:type="notation:Node" xmi:id="_GQHy0F8ZEem0RrbB8IXw7Q" type="6003">
169 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQHy0V8ZEem0RrbB8IXw7Q" x="-186" y="-10"/>
170 </children>
171 <styles xmi:type="notation:ConnectorStyle" xmi:id="_GQHLx18ZEem0RrbB8IXw7Q" routing="Rectilinear"/>
172 <styles xmi:type="notation:FontStyle" xmi:id="_GQHLyF8ZEem0RrbB8IXw7Q" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
173 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GQHLyV8ZEem0RrbB8IXw7Q" points="[59, 60, -229, -434]$[301, 60, 13, -434]$[301, 396, 13, -98]"/>
174 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQHy0l8ZEem0RrbB8IXw7Q" id="(0.5,0.0)"/>
175 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQHy018ZEem0RrbB8IXw7Q" id="(0.5,1.0)"/>
176 </edges>
177 <edges xmi:type="notation:Edge" xmi:id="_GQHy1F8ZEem0RrbB8IXw7Q" type="4001" element="_GPzpyV8ZEem0RrbB8IXw7Q" source="_GP8zsF8ZEem0RrbB8IXw7Q" target="_GP7lk18ZEem0RrbB8IXw7Q">
178 <children xmi:type="notation:Node" xmi:id="_GQHy2F8ZEem0RrbB8IXw7Q" type="6001">
179 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQHy2V8ZEem0RrbB8IXw7Q" y="-10"/>
180 </children>
181 <children xmi:type="notation:Node" xmi:id="_GQHy2l8ZEem0RrbB8IXw7Q" type="6002">
182 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQHy218ZEem0RrbB8IXw7Q" y="10"/>
183 </children>
184 <children xmi:type="notation:Node" xmi:id="_GQHy3F8ZEem0RrbB8IXw7Q" type="6003">
185 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQHy3V8ZEem0RrbB8IXw7Q" y="10"/>
186 </children>
187 <styles xmi:type="notation:ConnectorStyle" xmi:id="_GQHy1V8ZEem0RrbB8IXw7Q" routing="Tree"/>
188 <styles xmi:type="notation:FontStyle" xmi:id="_GQHy1l8ZEem0RrbB8IXw7Q" fontName="Segoe UI" fontHeight="8"/>
189 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GQHy118ZEem0RrbB8IXw7Q" points="[0, 0, 162, 60]$[-162, -60, 0, 0]"/>
190 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQIZ4F8ZEem0RrbB8IXw7Q" id="(0.5,0.0)"/>
191 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQIZ4V8ZEem0RrbB8IXw7Q" id="(0.5,1.0)"/>
192 </edges>
193 <edges xmi:type="notation:Edge" xmi:id="_GQIZ4l8ZEem0RrbB8IXw7Q" type="4001" element="_GP1e9l8ZEem0RrbB8IXw7Q" source="_GP8MpF8ZEem0RrbB8IXw7Q" target="_GP7lk18ZEem0RrbB8IXw7Q">
194 <children xmi:type="notation:Node" xmi:id="_GQIZ5l8ZEem0RrbB8IXw7Q" type="6001">
195 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQIZ518ZEem0RrbB8IXw7Q" x="-113" y="-10"/>
196 </children>
197 <children xmi:type="notation:Node" xmi:id="_GQIZ6F8ZEem0RrbB8IXw7Q" type="6002">
198 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQIZ6V8ZEem0RrbB8IXw7Q" x="50" y="10"/>
199 </children>
200 <children xmi:type="notation:Node" xmi:id="_GQIZ6l8ZEem0RrbB8IXw7Q" type="6003">
201 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQIZ618ZEem0RrbB8IXw7Q" x="-105" y="-47"/>
202 </children>
203 <styles xmi:type="notation:ConnectorStyle" xmi:id="_GQIZ418ZEem0RrbB8IXw7Q" routing="Tree"/>
204 <styles xmi:type="notation:FontStyle" xmi:id="_GQIZ5F8ZEem0RrbB8IXw7Q" fontName="Segoe UI" fontHeight="8"/>
205 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GQIZ5V8ZEem0RrbB8IXw7Q" points="[0, 0, -492, 130]$[0, -48, -492, 82]$[491, -48, -1, 82]$[491, -130, -1, 0]"/>
206 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQJA8F8ZEem0RrbB8IXw7Q" id="(0.5,0.0)"/>
207 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQJA8V8ZEem0RrbB8IXw7Q" id="(0.5,1.0)"/>
208 </edges>
209 <edges xmi:type="notation:Edge" xmi:id="_GQJA8l8ZEem0RrbB8IXw7Q" type="4001" element="_GP2tEF8ZEem0RrbB8IXw7Q" source="_GP7lk18ZEem0RrbB8IXw7Q" target="_GP8MpF8ZEem0RrbB8IXw7Q">
210 <children xmi:type="notation:Node" xmi:id="_GQJA9l8ZEem0RrbB8IXw7Q" type="6001">
211 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQJA918ZEem0RrbB8IXw7Q" x="-272" y="-10"/>
212 </children>
213 <children xmi:type="notation:Node" xmi:id="_GQJA-F8ZEem0RrbB8IXw7Q" type="6002">
214 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQJA-V8ZEem0RrbB8IXw7Q" x="4" y="-10"/>
215 </children>
216 <children xmi:type="notation:Node" xmi:id="_GQJA-l8ZEem0RrbB8IXw7Q" type="6003">
217 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQJA-18ZEem0RrbB8IXw7Q" x="-92" y="-291"/>
218 </children>
219 <styles xmi:type="notation:ConnectorStyle" xmi:id="_GQJA818ZEem0RrbB8IXw7Q" routing="Rectilinear"/>
220 <styles xmi:type="notation:FontStyle" xmi:id="_GQJA9F8ZEem0RrbB8IXw7Q" fontName="Segoe UI" fontHeight="8"/>
221 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GQJA9V8ZEem0RrbB8IXw7Q" points="[-59, -38, 433, -168]$[-467, -38, 25, -168]$[-467, 130, 25, 0]"/>
222 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQJA_F8ZEem0RrbB8IXw7Q" id="(0.5,1.0)"/>
223 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GQJA_V8ZEem0RrbB8IXw7Q" id="(0.5,0.0)"/>
224 </edges>
225 </data>
226 </ownedAnnotationEntries>
227 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_GPjyIF8ZEem0RrbB8IXw7Q" name="FileSystem" tooltipText="" outgoingEdges="_GPv_YF8ZEem0RrbB8IXw7Q _GPx0kF8ZEem0RrbB8IXw7Q" incomingEdges="_GPybqV8ZEem0RrbB8IXw7Q" width="12" height="10">
228 <target xmi:type="ecore:EClass" href="filesystem.ecore#//FileSystem"/>
229 <semanticElements xmi:type="ecore:EClass" href="filesystem.ecore#//FileSystem"/>
230 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
231 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
232 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
233 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_GPlAQF8ZEem0RrbB8IXw7Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
234 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
235 </ownedStyle>
236 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
237 </ownedDiagramElements>
238 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_GPm1cF8ZEem0RrbB8IXw7Q" name="FSObject" tooltipText="" outgoingEdges="_GP2tEF8ZEem0RrbB8IXw7Q" incomingEdges="_GPx0kF8ZEem0RrbB8IXw7Q _GPzCtl8ZEem0RrbB8IXw7Q _GPzpyV8ZEem0RrbB8IXw7Q _GP1e9l8ZEem0RrbB8IXw7Q" width="12" height="10">
239 <target xmi:type="ecore:EClass" href="filesystem.ecore#//FSObject"/>
240 <semanticElements xmi:type="ecore:EClass" href="filesystem.ecore#//FSObject"/>
241 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
242 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
243 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
244 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_GPm1cV8ZEem0RrbB8IXw7Q" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
245 <labelFormat>italic</labelFormat>
246 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
247 </ownedStyle>
248 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
249 </ownedDiagramElements>
250 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_GPncgV8ZEem0RrbB8IXw7Q" name="Dir" tooltipText="" outgoingEdges="_GP1e9l8ZEem0RrbB8IXw7Q" incomingEdges="_GPv_YF8ZEem0RrbB8IXw7Q _GP2tEF8ZEem0RrbB8IXw7Q" width="12" height="10">
251 <target xmi:type="ecore:EClass" href="filesystem.ecore#//Dir"/>
252 <semanticElements xmi:type="ecore:EClass" href="filesystem.ecore#//Dir"/>
253 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
254 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
255 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
256 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_GPncgl8ZEem0RrbB8IXw7Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
257 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
258 </ownedStyle>
259 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
260 </ownedDiagramElements>
261 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_GPoDkV8ZEem0RrbB8IXw7Q" name="File" tooltipText="" outgoingEdges="_GPzpyV8ZEem0RrbB8IXw7Q" width="12" height="10">
262 <target xmi:type="ecore:EClass" href="filesystem.ecore#//File"/>
263 <semanticElements xmi:type="ecore:EClass" href="filesystem.ecore#//File"/>
264 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
265 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
266 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
267 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_GPoDkl8ZEem0RrbB8IXw7Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
268 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
269 </ownedStyle>
270 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
271 </ownedDiagramElements>
272 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_GPoqoF8ZEem0RrbB8IXw7Q" name="Model" tooltipText="" outgoingEdges="_GPybqV8ZEem0RrbB8IXw7Q _GPzCtl8ZEem0RrbB8IXw7Q" width="12" height="10">
273 <target xmi:type="ecore:EClass" href="filesystem.ecore#//Model"/>
274 <semanticElements xmi:type="ecore:EClass" href="filesystem.ecore#//Model"/>
275 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
276 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
277 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
278 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_GPoqoV8ZEem0RrbB8IXw7Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
279 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
280 </ownedStyle>
281 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
282 </ownedDiagramElements>
283 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_GPv_YF8ZEem0RrbB8IXw7Q" name="[1..1] root" sourceNode="_GPjyIF8ZEem0RrbB8IXw7Q" targetNode="_GPncgV8ZEem0RrbB8IXw7Q">
284 <target xmi:type="ecore:EReference" href="filesystem.ecore#//FileSystem/root"/>
285 <semanticElements xmi:type="ecore:EReference" href="filesystem.ecore#//FileSystem/root"/>
286 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_GPxNg18ZEem0RrbB8IXw7Q" description="_GPxNgF8ZEem0RrbB8IXw7Q" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
287 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_GPxNhV8ZEem0RrbB8IXw7Q" showIcon="false">
288 <customFeatures>labelSize</customFeatures>
289 <labelFormat>bold</labelFormat>
290 </centerLabelStyle>
291 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_GPxNhF8ZEem0RrbB8IXw7Q" showIcon="false" labelColor="39,76,114">
292 <customFeatures>labelSize</customFeatures>
293 </endLabelStyle>
294 </ownedStyle>
295 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
296 </ownedDiagramElements>
297 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_GPx0kF8ZEem0RrbB8IXw7Q" name="[0..*] /live" sourceNode="_GPjyIF8ZEem0RrbB8IXw7Q" targetNode="_GPm1cF8ZEem0RrbB8IXw7Q">
298 <target xmi:type="ecore:EReference" href="filesystem.ecore#//FileSystem/live"/>
299 <semanticElements xmi:type="ecore:EReference" href="filesystem.ecore#//FileSystem/live"/>
300 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_GPybo18ZEem0RrbB8IXw7Q" description="_GPyboF8ZEem0RrbB8IXw7Q" routingStyle="manhattan" strokeColor="114,159,207">
301 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_GPybpV8ZEem0RrbB8IXw7Q" showIcon="false" labelColor="39,76,114">
302 <customFeatures>labelSize</customFeatures>
303 </centerLabelStyle>
304 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_GPybpF8ZEem0RrbB8IXw7Q" showIcon="false" labelColor="39,76,114">
305 <customFeatures>labelSize</customFeatures>
306 </endLabelStyle>
307 </ownedStyle>
308 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
309 </ownedDiagramElements>
310 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_GPybqV8ZEem0RrbB8IXw7Q" name="[1..1] filesystems" sourceNode="_GPoqoF8ZEem0RrbB8IXw7Q" targetNode="_GPjyIF8ZEem0RrbB8IXw7Q">
311 <target xmi:type="ecore:EReference" href="filesystem.ecore#//Model/filesystems"/>
312 <semanticElements xmi:type="ecore:EReference" href="filesystem.ecore#//Model/filesystems"/>
313 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_GPzCsF8ZEem0RrbB8IXw7Q" description="_GPxNgF8ZEem0RrbB8IXw7Q" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
314 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_GPzCsl8ZEem0RrbB8IXw7Q" showIcon="false">
315 <customFeatures>labelSize</customFeatures>
316 <labelFormat>bold</labelFormat>
317 </centerLabelStyle>
318 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_GPzCsV8ZEem0RrbB8IXw7Q" showIcon="false" labelColor="39,76,114">
319 <customFeatures>labelSize</customFeatures>
320 </endLabelStyle>
321 </ownedStyle>
322 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
323 </ownedDiagramElements>
324 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_GPzCtl8ZEem0RrbB8IXw7Q" name="[0..*] otherFSObjects" sourceNode="_GPoqoF8ZEem0RrbB8IXw7Q" targetNode="_GPm1cF8ZEem0RrbB8IXw7Q">
325 <target xmi:type="ecore:EReference" href="filesystem.ecore#//Model/otherFSObjects"/>
326 <semanticElements xmi:type="ecore:EReference" href="filesystem.ecore#//Model/otherFSObjects"/>
327 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_GPzpw18ZEem0RrbB8IXw7Q" description="_GPzpwF8ZEem0RrbB8IXw7Q" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
328 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_GPzpxV8ZEem0RrbB8IXw7Q" showIcon="false">
329 <customFeatures>labelSize</customFeatures>
330 </centerLabelStyle>
331 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_GPzpxF8ZEem0RrbB8IXw7Q" showIcon="false" labelColor="39,76,114">
332 <customFeatures>labelSize</customFeatures>
333 </endLabelStyle>
334 </ownedStyle>
335 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
336 </ownedDiagramElements>
337 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_GPzpyV8ZEem0RrbB8IXw7Q" sourceNode="_GPoDkV8ZEem0RrbB8IXw7Q" targetNode="_GPm1cF8ZEem0RrbB8IXw7Q">
338 <target xmi:type="ecore:EClass" href="filesystem.ecore#//File"/>
339 <semanticElements xmi:type="ecore:EClass" href="filesystem.ecore#//File"/>
340 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_GP1e8F8ZEem0RrbB8IXw7Q" targetArrow="InputClosedArrow" routingStyle="tree">
341 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
342 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_GP1e8V8ZEem0RrbB8IXw7Q" showIcon="false">
343 <labelFormat>italic</labelFormat>
344 </beginLabelStyle>
345 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_GP1e8l8ZEem0RrbB8IXw7Q" showIcon="false"/>
346 </ownedStyle>
347 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
348 </ownedDiagramElements>
349 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_GP1e9l8ZEem0RrbB8IXw7Q" sourceNode="_GPncgV8ZEem0RrbB8IXw7Q" targetNode="_GPm1cF8ZEem0RrbB8IXw7Q">
350 <target xmi:type="ecore:EClass" href="filesystem.ecore#//Dir"/>
351 <semanticElements xmi:type="ecore:EClass" href="filesystem.ecore#//Dir"/>
352 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_GP2GAF8ZEem0RrbB8IXw7Q" targetArrow="InputClosedArrow" routingStyle="tree">
353 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
354 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_GP2GAV8ZEem0RrbB8IXw7Q" showIcon="false">
355 <labelFormat>italic</labelFormat>
356 </beginLabelStyle>
357 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_GP2GAl8ZEem0RrbB8IXw7Q" showIcon="false"/>
358 </ownedStyle>
359 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
360 </ownedDiagramElements>
361 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_GP2tEF8ZEem0RrbB8IXw7Q" sourceNode="_GPm1cF8ZEem0RrbB8IXw7Q" targetNode="_GPncgV8ZEem0RrbB8IXw7Q" beginLabel="[0..*] contents" endLabel="[0..1] parent">
362 <target xmi:type="ecore:EReference" href="filesystem.ecore#//FSObject/parent"/>
363 <semanticElements xmi:type="ecore:EReference" href="filesystem.ecore#//Dir/contents"/>
364 <semanticElements xmi:type="ecore:EReference" href="filesystem.ecore#//FSObject/parent"/>
365 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_GP3UI18ZEem0RrbB8IXw7Q" description="_GP3UIF8ZEem0RrbB8IXw7Q" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
366 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_GP3UJF8ZEem0RrbB8IXw7Q" showIcon="false"/>
367 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_GP3UJV8ZEem0RrbB8IXw7Q" showIcon="false"/>
368 </ownedStyle>
369 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
370 </ownedDiagramElements>
371 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
372 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_Eq_BAF8ZEem0RrbB8IXw7Q"/>
373 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
374 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
375 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
376 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
377 <target xmi:type="ecore:EPackage" href="filesystem.ecore#/"/>
378 </diagram:DSemanticDiagram>
379</xmi:XMI>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.aird b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.aird
index ef3746fa..be45a301 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.aird
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.aird
@@ -52,7 +52,7 @@
52 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_nnMlybEemc87q3iJlCgw"/> 52 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_nnMlybEemc87q3iJlCgw"/>
53 </children> 53 </children>
54 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_kj4VybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8" italic="true"/> 54 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_kj4VybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8" italic="true"/>
55 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_kj4lybEemc87q3iJlCgw" x="360" y="324"/> 55 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_kj4lybEemc87q3iJlCgw" x="1113" y="420"/>
56 </children> 56 </children>
57 <children xmi:type="notation:Node" xmi:id="_g_o1UFybEemc87q3iJlCgw" type="2003" element="_g-SKcFybEemc87q3iJlCgw"> 57 <children xmi:type="notation:Node" xmi:id="_g_o1UFybEemc87q3iJlCgw" type="2003" element="_g-SKcFybEemc87q3iJlCgw">
58 <children xmi:type="notation:Node" xmi:id="_g_pcYFybEemc87q3iJlCgw" type="5007"/> 58 <children xmi:type="notation:Node" xmi:id="_g_pcYFybEemc87q3iJlCgw" type="5007"/>
@@ -61,7 +61,7 @@
61 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_pcY1ybEemc87q3iJlCgw"/> 61 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_pcY1ybEemc87q3iJlCgw"/>
62 </children> 62 </children>
63 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_o1UVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8" italic="true"/> 63 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_o1UVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8" italic="true"/>
64 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_o1UlybEemc87q3iJlCgw" x="648" y="156"/> 64 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_o1UlybEemc87q3iJlCgw" x="984" y="204"/>
65 </children> 65 </children>
66 <children xmi:type="notation:Node" xmi:id="_g_pcZFybEemc87q3iJlCgw" type="2003" element="_g-T_oFybEemc87q3iJlCgw"> 66 <children xmi:type="notation:Node" xmi:id="_g_pcZFybEemc87q3iJlCgw" type="2003" element="_g-T_oFybEemc87q3iJlCgw">
67 <children xmi:type="notation:Node" xmi:id="_g_pcZ1ybEemc87q3iJlCgw" type="5007"/> 67 <children xmi:type="notation:Node" xmi:id="_g_pcZ1ybEemc87q3iJlCgw" type="5007"/>
@@ -70,7 +70,7 @@
70 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_pcalybEemc87q3iJlCgw"/> 70 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_pcalybEemc87q3iJlCgw"/>
71 </children> 71 </children>
72 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_pcZVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 72 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_pcZVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
73 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_pcZlybEemc87q3iJlCgw" x="648" y="324"/> 73 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_pcZlybEemc87q3iJlCgw" x="948" y="36"/>
74 </children> 74 </children>
75 <children xmi:type="notation:Node" xmi:id="_g_qDcFybEemc87q3iJlCgw" type="2003" element="_g-Wb4FybEemc87q3iJlCgw"> 75 <children xmi:type="notation:Node" xmi:id="_g_qDcFybEemc87q3iJlCgw" type="2003" element="_g-Wb4FybEemc87q3iJlCgw">
76 <children xmi:type="notation:Node" xmi:id="_g_qDc1ybEemc87q3iJlCgw" type="5007"/> 76 <children xmi:type="notation:Node" xmi:id="_g_qDc1ybEemc87q3iJlCgw" type="5007"/>
@@ -79,7 +79,7 @@
79 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_qDdlybEemc87q3iJlCgw"/> 79 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_qDdlybEemc87q3iJlCgw"/>
80 </children> 80 </children>
81 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_qDcVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 81 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_qDcVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
82 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_qDclybEemc87q3iJlCgw" x="648"/> 82 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_qDclybEemc87q3iJlCgw" x="1404" y="204"/>
83 </children> 83 </children>
84 <children xmi:type="notation:Node" xmi:id="_g_qqgFybEemc87q3iJlCgw" type="2003" element="_g-YREFybEemc87q3iJlCgw"> 84 <children xmi:type="notation:Node" xmi:id="_g_qqgFybEemc87q3iJlCgw" type="2003" element="_g-YREFybEemc87q3iJlCgw">
85 <children xmi:type="notation:Node" xmi:id="_g_qqg1ybEemc87q3iJlCgw" type="5007"/> 85 <children xmi:type="notation:Node" xmi:id="_g_qqg1ybEemc87q3iJlCgw" type="5007"/>
@@ -88,7 +88,7 @@
88 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_qqhlybEemc87q3iJlCgw"/> 88 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_qqhlybEemc87q3iJlCgw"/>
89 </children> 89 </children>
90 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_qqgVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 90 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_qqgVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
91 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_qqglybEemc87q3iJlCgw" x="648" y="636"/> 91 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_qqglybEemc87q3iJlCgw" x="300" y="180"/>
92 </children> 92 </children>
93 <children xmi:type="notation:Node" xmi:id="_g_qqh1ybEemc87q3iJlCgw" type="2003" element="_g-aGQFybEemc87q3iJlCgw"> 93 <children xmi:type="notation:Node" xmi:id="_g_qqh1ybEemc87q3iJlCgw" type="2003" element="_g-aGQFybEemc87q3iJlCgw">
94 <children xmi:type="notation:Node" xmi:id="_g_rRkFybEemc87q3iJlCgw" type="5007"/> 94 <children xmi:type="notation:Node" xmi:id="_g_rRkFybEemc87q3iJlCgw" type="5007"/>
@@ -97,7 +97,7 @@
97 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_rRk1ybEemc87q3iJlCgw"/> 97 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_rRk1ybEemc87q3iJlCgw"/>
98 </children> 98 </children>
99 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_qqiFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 99 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_qqiFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
100 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_qqiVybEemc87q3iJlCgw" x="180" y="480"/> 100 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_qqiVybEemc87q3iJlCgw" x="1032" y="600"/>
101 </children> 101 </children>
102 <children xmi:type="notation:Node" xmi:id="_g_rRlFybEemc87q3iJlCgw" type="2003" element="_g-b7cFybEemc87q3iJlCgw"> 102 <children xmi:type="notation:Node" xmi:id="_g_rRlFybEemc87q3iJlCgw" type="2003" element="_g-b7cFybEemc87q3iJlCgw">
103 <children xmi:type="notation:Node" xmi:id="_g_r4oFybEemc87q3iJlCgw" type="5007"/> 103 <children xmi:type="notation:Node" xmi:id="_g_r4oFybEemc87q3iJlCgw" type="5007"/>
@@ -106,7 +106,7 @@
106 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_r4o1ybEemc87q3iJlCgw"/> 106 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_r4o1ybEemc87q3iJlCgw"/>
107 </children> 107 </children>
108 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_rRlVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 108 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_rRlVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
109 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_rRllybEemc87q3iJlCgw" y="480"/> 109 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_rRllybEemc87q3iJlCgw" x="852" y="600"/>
110 </children> 110 </children>
111 <children xmi:type="notation:Node" xmi:id="_g_sfsFybEemc87q3iJlCgw" type="2003" element="_g-dJkVybEemc87q3iJlCgw"> 111 <children xmi:type="notation:Node" xmi:id="_g_sfsFybEemc87q3iJlCgw" type="2003" element="_g-dJkVybEemc87q3iJlCgw">
112 <children xmi:type="notation:Node" xmi:id="_g_sfs1ybEemc87q3iJlCgw" type="5007"/> 112 <children xmi:type="notation:Node" xmi:id="_g_sfs1ybEemc87q3iJlCgw" type="5007"/>
@@ -115,7 +115,7 @@
115 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_sftlybEemc87q3iJlCgw"/> 115 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_sftlybEemc87q3iJlCgw"/>
116 </children> 116 </children>
117 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_sfsVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 117 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_sfsVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
118 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_sfslybEemc87q3iJlCgw" x="828" y="636"/> 118 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_sfslybEemc87q3iJlCgw" x="504" y="492"/>
119 </children> 119 </children>
120 <children xmi:type="notation:Node" xmi:id="_g_tGwFybEemc87q3iJlCgw" type="2003" element="_g-fl0FybEemc87q3iJlCgw"> 120 <children xmi:type="notation:Node" xmi:id="_g_tGwFybEemc87q3iJlCgw" type="2003" element="_g-fl0FybEemc87q3iJlCgw">
121 <children xmi:type="notation:Node" xmi:id="_g_uU4FybEemc87q3iJlCgw" type="5007"/> 121 <children xmi:type="notation:Node" xmi:id="_g_uU4FybEemc87q3iJlCgw" type="5007"/>
@@ -124,7 +124,7 @@
124 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_u78lybEemc87q3iJlCgw"/> 124 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_u78lybEemc87q3iJlCgw"/>
125 </children> 125 </children>
126 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_tGwVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8" italic="true"/> 126 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_tGwVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8" italic="true"/>
127 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_tGwlybEemc87q3iJlCgw" x="828" y="324"/> 127 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_tGwlybEemc87q3iJlCgw" x="672" y="348"/>
128 </children> 128 </children>
129 <children xmi:type="notation:Node" xmi:id="_g_u781ybEemc87q3iJlCgw" type="2003" element="_g-hbAVybEemc87q3iJlCgw"> 129 <children xmi:type="notation:Node" xmi:id="_g_u781ybEemc87q3iJlCgw" type="2003" element="_g-hbAVybEemc87q3iJlCgw">
130 <children xmi:type="notation:Node" xmi:id="_g_vjAFybEemc87q3iJlCgw" type="5007"/> 130 <children xmi:type="notation:Node" xmi:id="_g_vjAFybEemc87q3iJlCgw" type="5007"/>
@@ -133,7 +133,7 @@
133 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_vjA1ybEemc87q3iJlCgw"/> 133 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_vjA1ybEemc87q3iJlCgw"/>
134 </children> 134 </children>
135 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_u79FybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8" italic="true"/> 135 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_u79FybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8" italic="true"/>
136 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_u79VybEemc87q3iJlCgw" x="720" y="480"/> 136 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_u79VybEemc87q3iJlCgw" x="648" y="24"/>
137 </children> 137 </children>
138 <children xmi:type="notation:Node" xmi:id="_g_vjBFybEemc87q3iJlCgw" type="2003" element="_g-jQMFybEemc87q3iJlCgw"> 138 <children xmi:type="notation:Node" xmi:id="_g_vjBFybEemc87q3iJlCgw" type="2003" element="_g-jQMFybEemc87q3iJlCgw">
139 <children xmi:type="notation:Node" xmi:id="_g_wKEFybEemc87q3iJlCgw" type="5007"/> 139 <children xmi:type="notation:Node" xmi:id="_g_wKEFybEemc87q3iJlCgw" type="5007"/>
@@ -142,7 +142,7 @@
142 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_wKE1ybEemc87q3iJlCgw"/> 142 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_wKE1ybEemc87q3iJlCgw"/>
143 </children> 143 </children>
144 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_vjBVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 144 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_vjBVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
145 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_vjBlybEemc87q3iJlCgw" x="360" y="480"/> 145 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_vjBlybEemc87q3iJlCgw" x="1212" y="600"/>
146 </children> 146 </children>
147 <children xmi:type="notation:Node" xmi:id="_g_wKFFybEemc87q3iJlCgw" type="2003" element="_g-lscFybEemc87q3iJlCgw"> 147 <children xmi:type="notation:Node" xmi:id="_g_wKFFybEemc87q3iJlCgw" type="2003" element="_g-lscFybEemc87q3iJlCgw">
148 <children xmi:type="notation:Node" xmi:id="_g_wKF1ybEemc87q3iJlCgw" type="5007"/> 148 <children xmi:type="notation:Node" xmi:id="_g_wKF1ybEemc87q3iJlCgw" type="5007"/>
@@ -151,7 +151,7 @@
151 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_wKGlybEemc87q3iJlCgw"/> 151 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_wKGlybEemc87q3iJlCgw"/>
152 </children> 152 </children>
153 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_wKFVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 153 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_wKFVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
154 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_wKFlybEemc87q3iJlCgw" x="540" y="480"/> 154 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_wKFlybEemc87q3iJlCgw" x="1392" y="600"/>
155 </children> 155 </children>
156 <children xmi:type="notation:Node" xmi:id="_g_wxIFybEemc87q3iJlCgw" type="2003" element="_g-m6kFybEemc87q3iJlCgw"> 156 <children xmi:type="notation:Node" xmi:id="_g_wxIFybEemc87q3iJlCgw" type="2003" element="_g-m6kFybEemc87q3iJlCgw">
157 <children xmi:type="notation:Node" xmi:id="_g_wxI1ybEemc87q3iJlCgw" type="5007"/> 157 <children xmi:type="notation:Node" xmi:id="_g_wxI1ybEemc87q3iJlCgw" type="5007"/>
@@ -160,22 +160,22 @@
160 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_wxJlybEemc87q3iJlCgw"/> 160 <styles xmi:type="notation:FilteringStyle" xmi:id="_g_wxJlybEemc87q3iJlCgw"/>
161 </children> 161 </children>
162 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_wxIVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 162 <styles xmi:type="notation:ShapeStyle" xmi:id="_g_wxIVybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
163 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_wxIlybEemc87q3iJlCgw" x="936" y="480"/> 163 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_wxIlybEemc87q3iJlCgw" x="756" y="480"/>
164 </children> 164 </children>
165 <styles xmi:type="notation:DiagramStyle" xmi:id="_gH58ElybEemc87q3iJlCgw"/> 165 <styles xmi:type="notation:DiagramStyle" xmi:id="_gH58ElybEemc87q3iJlCgw"/>
166 <edges xmi:type="notation:Edge" xmi:id="_g_z0cFybEemc87q3iJlCgw" type="4001" element="_g_JtIFybEemc87q3iJlCgw" source="_g_pcZFybEemc87q3iJlCgw" target="_g_o1UFybEemc87q3iJlCgw"> 166 <edges xmi:type="notation:Edge" xmi:id="_g_z0cFybEemc87q3iJlCgw" type="4001" element="_g_JtIFybEemc87q3iJlCgw" source="_g_pcZFybEemc87q3iJlCgw" target="_g_o1UFybEemc87q3iJlCgw">
167 <children xmi:type="notation:Node" xmi:id="_g_4s8FybEemc87q3iJlCgw" type="6001"> 167 <children xmi:type="notation:Node" xmi:id="_g_4s8FybEemc87q3iJlCgw" type="6001">
168 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_4s8VybEemc87q3iJlCgw" x="19" y="47"/> 168 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_4s8VybEemc87q3iJlCgw" x="-10"/>
169 </children> 169 </children>
170 <children xmi:type="notation:Node" xmi:id="_g_4s8lybEemc87q3iJlCgw" type="6002"> 170 <children xmi:type="notation:Node" xmi:id="_g_4s8lybEemc87q3iJlCgw" type="6002">
171 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_4s81ybEemc87q3iJlCgw" y="10"/> 171 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_4s81ybEemc87q3iJlCgw" x="60"/>
172 </children> 172 </children>
173 <children xmi:type="notation:Node" xmi:id="_g_4s9FybEemc87q3iJlCgw" type="6003"> 173 <children xmi:type="notation:Node" xmi:id="_g_4s9FybEemc87q3iJlCgw" type="6003">
174 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_4s9VybEemc87q3iJlCgw" y="10"/> 174 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_4s9VybEemc87q3iJlCgw" x="10"/>
175 </children> 175 </children>
176 <styles xmi:type="notation:ConnectorStyle" xmi:id="_g_z0cVybEemc87q3iJlCgw" routing="Rectilinear"/> 176 <styles xmi:type="notation:ConnectorStyle" xmi:id="_g_z0cVybEemc87q3iJlCgw" routing="Rectilinear"/>
177 <styles xmi:type="notation:FontStyle" xmi:id="_g_z0clybEemc87q3iJlCgw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> 177 <styles xmi:type="notation:FontStyle" xmi:id="_g_z0clybEemc87q3iJlCgw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
178 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g_z0c1ybEemc87q3iJlCgw" points="[25, 0, 25, 70]$[25, -70, 25, 0]"/> 178 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g_z0c1ybEemc87q3iJlCgw" points="[25, 98, -11, -168]$[25, 168, -11, -98]"/>
179 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAETIFybEemc87q3iJlCgw" id="(0.5,0.0)"/> 179 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAETIFybEemc87q3iJlCgw" id="(0.5,0.0)"/>
180 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAETIVybEemc87q3iJlCgw" id="(0.5,1.0)"/> 180 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAETIVybEemc87q3iJlCgw" id="(0.5,1.0)"/>
181 </edges> 181 </edges>
@@ -191,7 +191,7 @@
191 </children> 191 </children>
192 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAETI1ybEemc87q3iJlCgw" routing="Rectilinear"/> 192 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAETI1ybEemc87q3iJlCgw" routing="Rectilinear"/>
193 <styles xmi:type="notation:FontStyle" xmi:id="_hAETJFybEemc87q3iJlCgw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> 193 <styles xmi:type="notation:FontStyle" xmi:id="_hAETJFybEemc87q3iJlCgw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
194 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAETJVybEemc87q3iJlCgw" points="[0, 0, 75, 60]$[-75, -60, 0, 0]"/> 194 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAETJVybEemc87q3iJlCgw" points="[59, 72, -241, -38]$[241, 72, -59, -38]"/>
195 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAFhRFybEemc87q3iJlCgw" id="(0.5,0.0)"/> 195 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAFhRFybEemc87q3iJlCgw" id="(0.5,0.0)"/>
196 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAFhRVybEemc87q3iJlCgw" id="(0.5,1.0)"/> 196 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAFhRVybEemc87q3iJlCgw" id="(0.5,1.0)"/>
197 </edges> 197 </edges>
@@ -207,7 +207,7 @@
207 </children> 207 </children>
208 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAFhR1ybEemc87q3iJlCgw" routing="Tree"/> 208 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAFhR1ybEemc87q3iJlCgw" routing="Tree"/>
209 <styles xmi:type="notation:FontStyle" xmi:id="_hAFhSFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 209 <styles xmi:type="notation:FontStyle" xmi:id="_hAFhSFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
210 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAFhSVybEemc87q3iJlCgw" points="[0, 0, 180, 60]$[-180, -60, 0, 0]"/> 210 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAFhSVybEemc87q3iJlCgw" points="[0, 0, -312, 46]$[0, -12, -312, 34]$[275, -12, -37, 34]$[275, -46, -37, 0]"/>
211 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAGIVlybEemc87q3iJlCgw" id="(0.5,0.0)"/> 211 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAGIVlybEemc87q3iJlCgw" id="(0.5,0.0)"/>
212 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAGIV1ybEemc87q3iJlCgw" id="(0.5,1.0)"/> 212 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAGIV1ybEemc87q3iJlCgw" id="(0.5,1.0)"/>
213 </edges> 213 </edges>
@@ -223,7 +223,7 @@
223 </children> 223 </children>
224 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAGIWVybEemc87q3iJlCgw" routing="Tree"/> 224 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAGIWVybEemc87q3iJlCgw" routing="Tree"/>
225 <styles xmi:type="notation:FontStyle" xmi:id="_hAGIWlybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 225 <styles xmi:type="notation:FontStyle" xmi:id="_hAGIWlybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
226 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAGIW1ybEemc87q3iJlCgw" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/> 226 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAGIW1ybEemc87q3iJlCgw" points="[0, 0, 99, 82]$[0, -36, 99, 46]$[-100, -36, -1, 46]$[-100, -82, -1, 0]"/>
227 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAHWcFybEemc87q3iJlCgw" id="(0.5,0.0)"/> 227 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAHWcFybEemc87q3iJlCgw" id="(0.5,0.0)"/>
228 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAHWcVybEemc87q3iJlCgw" id="(0.5,1.0)"/> 228 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAHWcVybEemc87q3iJlCgw" id="(0.5,1.0)"/>
229 </edges> 229 </edges>
@@ -239,7 +239,7 @@
239 </children> 239 </children>
240 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAHWc1ybEemc87q3iJlCgw" routing="Tree"/> 240 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAHWc1ybEemc87q3iJlCgw" routing="Tree"/>
241 <styles xmi:type="notation:FontStyle" xmi:id="_hAHWdFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 241 <styles xmi:type="notation:FontStyle" xmi:id="_hAHWdFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
242 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAHWdVybEemc87q3iJlCgw" points="[0, 0, 180, 60]$[-180, -60, 0, 0]"/> 242 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAHWdVybEemc87q3iJlCgw" points="[0, 0, 279, 82]$[0, -36, 279, 46]$[-280, -36, -1, 46]$[-280, -82, -1, 0]"/>
243 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAH9hlybEemc87q3iJlCgw" id="(0.5,0.0)"/> 243 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAH9hlybEemc87q3iJlCgw" id="(0.5,0.0)"/>
244 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAH9h1ybEemc87q3iJlCgw" id="(0.5,1.0)"/> 244 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAH9h1ybEemc87q3iJlCgw" id="(0.5,1.0)"/>
245 </edges> 245 </edges>
@@ -255,7 +255,7 @@
255 </children> 255 </children>
256 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAIkkVybEemc87q3iJlCgw" routing="Tree"/> 256 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAIkkVybEemc87q3iJlCgw" routing="Tree"/>
257 <styles xmi:type="notation:FontStyle" xmi:id="_hAIkklybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 257 <styles xmi:type="notation:FontStyle" xmi:id="_hAIkklybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
258 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAIkk1ybEemc87q3iJlCgw" points="[0, 0, 106, 60]$[-106, -60, 0, 0]"/> 258 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAIkk1ybEemc87q3iJlCgw" points="[0, 0, 84, 34]$[0, -12, 84, 22]$[-99, -12, -15, 22]$[-99, -34, -15, 0]"/>
259 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAJLoFybEemc87q3iJlCgw" id="(0.5,0.0)"/> 259 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAJLoFybEemc87q3iJlCgw" id="(0.5,0.0)"/>
260 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAJLoVybEemc87q3iJlCgw" id="(0.5,1.0)"/> 260 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAJLoVybEemc87q3iJlCgw" id="(0.5,1.0)"/>
261 </edges> 261 </edges>
@@ -271,7 +271,7 @@
271 </children> 271 </children>
272 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAJLo1ybEemc87q3iJlCgw" routing="Tree"/> 272 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAJLo1ybEemc87q3iJlCgw" routing="Tree"/>
273 <styles xmi:type="notation:FontStyle" xmi:id="_hAJLpFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 273 <styles xmi:type="notation:FontStyle" xmi:id="_hAJLpFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
274 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAJLpVybEemc87q3iJlCgw" points="[0, 0, -180, 60]$[180, -60, 0, 0]"/> 274 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAJLpVybEemc87q3iJlCgw" points="[0, 0, -81, 82]$[0, -36, -81, 46]$[80, -36, -1, 46]$[80, -82, -1, 0]"/>
275 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAKZwFybEemc87q3iJlCgw" id="(0.5,0.0)"/> 275 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAKZwFybEemc87q3iJlCgw" id="(0.5,0.0)"/>
276 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAKZwVybEemc87q3iJlCgw" id="(0.5,1.0)"/> 276 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAKZwVybEemc87q3iJlCgw" id="(0.5,1.0)"/>
277 </edges> 277 </edges>
@@ -287,7 +287,7 @@
287 </children> 287 </children>
288 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAKZw1ybEemc87q3iJlCgw" routing="Tree"/> 288 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAKZw1ybEemc87q3iJlCgw" routing="Tree"/>
289 <styles xmi:type="notation:FontStyle" xmi:id="_hAKZxFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 289 <styles xmi:type="notation:FontStyle" xmi:id="_hAKZxFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
290 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAKZxVybEemc87q3iJlCgw" points="[0, 0, -75, 60]$[75, -60, 0, 0]"/> 290 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAKZxVybEemc87q3iJlCgw" points="[0, 98, -348, 156]$[0, 144, -348, 202]$[359, 144, 11, 202]$[359, -58, 11, 0]"/>
291 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hALA0FybEemc87q3iJlCgw" id="(0.5,0.0)"/> 291 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hALA0FybEemc87q3iJlCgw" id="(0.5,0.0)"/>
292 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hALA0VybEemc87q3iJlCgw" id="(0.5,1.0)"/> 292 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hALA0VybEemc87q3iJlCgw" id="(0.5,1.0)"/>
293 </edges> 293 </edges>
@@ -303,7 +303,7 @@
303 </children> 303 </children>
304 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hALA01ybEemc87q3iJlCgw" routing="Tree"/> 304 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hALA01ybEemc87q3iJlCgw" routing="Tree"/>
305 <styles xmi:type="notation:FontStyle" xmi:id="_hALA1FybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 305 <styles xmi:type="notation:FontStyle" xmi:id="_hALA1FybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
306 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hALA1VybEemc87q3iJlCgw" points="[0, 0, -360, 60]$[360, -60, 0, 0]"/> 306 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hALA1VybEemc87q3iJlCgw" points="[0, 0, -261, 82]$[0, -36, -261, 46]$[260, -36, -1, 46]$[260, -82, -1, 0]"/>
307 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hALn4FybEemc87q3iJlCgw" id="(0.5,0.0)"/> 307 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hALn4FybEemc87q3iJlCgw" id="(0.5,0.0)"/>
308 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hALn4VybEemc87q3iJlCgw" id="(0.5,1.0)"/> 308 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hALn4VybEemc87q3iJlCgw" id="(0.5,1.0)"/>
309 </edges> 309 </edges>
@@ -319,7 +319,7 @@
319 </children> 319 </children>
320 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAMO8VybEemc87q3iJlCgw" routing="Tree"/> 320 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAMO8VybEemc87q3iJlCgw" routing="Tree"/>
321 <styles xmi:type="notation:FontStyle" xmi:id="_hAMO8lybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 321 <styles xmi:type="notation:FontStyle" xmi:id="_hAMO8lybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
322 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAMO81ybEemc87q3iJlCgw" points="[0, 0, 0, 220]$[0, -220, 0, 0]"/> 322 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAMO81ybEemc87q3iJlCgw" points="[0, 0, -168, 46]$[0, -24, -168, 22]$[153, -24, -15, 22]$[153, -46, -15, 0]"/>
323 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAei0FybEemc87q3iJlCgw" id="(0.5,0.0)"/> 323 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAei0FybEemc87q3iJlCgw" id="(0.5,0.0)"/>
324 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAei0VybEemc87q3iJlCgw" id="(0.5,1.0)"/> 324 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAei0VybEemc87q3iJlCgw" id="(0.5,1.0)"/>
325 </edges> 325 </edges>
@@ -335,7 +335,7 @@
335 </children> 335 </children>
336 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAfJ4VybEemc87q3iJlCgw" routing="Tree"/> 336 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAfJ4VybEemc87q3iJlCgw" routing="Tree"/>
337 <styles xmi:type="notation:FontStyle" xmi:id="_hAfJ4lybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 337 <styles xmi:type="notation:FontStyle" xmi:id="_hAfJ4lybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
338 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAfJ41ybEemc87q3iJlCgw" points="[0, 0, 105, 60]$[-105, -60, 0, 0]"/> 338 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAfJ41ybEemc87q3iJlCgw" points="[0, 0, -144, 370]$[0, -168, -144, 202]$[155, -168, 11, 202]$[155, -370, 11, 0]"/>
339 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAgYAFybEemc87q3iJlCgw" id="(0.5,0.0)"/> 339 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAgYAFybEemc87q3iJlCgw" id="(0.5,0.0)"/>
340 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAgYAVybEemc87q3iJlCgw" id="(0.5,1.0)"/> 340 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAgYAVybEemc87q3iJlCgw" id="(0.5,1.0)"/>
341 </edges> 341 </edges>
@@ -351,39 +351,39 @@
351 </children> 351 </children>
352 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAgYA1ybEemc87q3iJlCgw" routing="Tree"/> 352 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAgYA1ybEemc87q3iJlCgw" routing="Tree"/>
353 <styles xmi:type="notation:FontStyle" xmi:id="_hAgYBFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 353 <styles xmi:type="notation:FontStyle" xmi:id="_hAgYBFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
354 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAgYBVybEemc87q3iJlCgw" points="[0, 0, -285, 60]$[285, -60, 0, 0]"/> 354 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAgYBVybEemc87q3iJlCgw" points="[0, 0, 129, 118]$[0, -84, 129, 34]$[-166, -84, -37, 34]$[-166, -118, -37, 0]"/>
355 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAg_FFybEemc87q3iJlCgw" id="(0.5,0.0)"/> 355 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAg_FFybEemc87q3iJlCgw" id="(0.5,0.0)"/>
356 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAg_FVybEemc87q3iJlCgw" id="(0.5,1.0)"/> 356 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAg_FVybEemc87q3iJlCgw" id="(0.5,1.0)"/>
357 </edges> 357 </edges>
358 <edges xmi:type="notation:Edge" xmi:id="_hAhmIFybEemc87q3iJlCgw" type="4001" element="_g_frY1ybEemc87q3iJlCgw" source="_g_o1UFybEemc87q3iJlCgw" target="_g_qDcFybEemc87q3iJlCgw"> 358 <edges xmi:type="notation:Edge" xmi:id="_hAhmIFybEemc87q3iJlCgw" type="4001" element="_g_frY1ybEemc87q3iJlCgw" source="_g_o1UFybEemc87q3iJlCgw" target="_g_qDcFybEemc87q3iJlCgw">
359 <children xmi:type="notation:Node" xmi:id="_hAhmJFybEemc87q3iJlCgw" type="6001"> 359 <children xmi:type="notation:Node" xmi:id="_hAhmJFybEemc87q3iJlCgw" type="6001">
360 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAhmJVybEemc87q3iJlCgw" x="1" y="-10"/> 360 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAhmJVybEemc87q3iJlCgw" x="-6" y="-10"/>
361 </children> 361 </children>
362 <children xmi:type="notation:Node" xmi:id="_hAhmJlybEemc87q3iJlCgw" type="6002"> 362 <children xmi:type="notation:Node" xmi:id="_hAhmJlybEemc87q3iJlCgw" type="6002">
363 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAhmJ1ybEemc87q3iJlCgw" y="-10"/> 363 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAhmJ1ybEemc87q3iJlCgw" x="-1" y="10"/>
364 </children> 364 </children>
365 <children xmi:type="notation:Node" xmi:id="_hAhmKFybEemc87q3iJlCgw" type="6003"> 365 <children xmi:type="notation:Node" xmi:id="_hAhmKFybEemc87q3iJlCgw" type="6003">
366 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAhmKVybEemc87q3iJlCgw" y="10"/> 366 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAhmKVybEemc87q3iJlCgw" x="-31" y="18"/>
367 </children> 367 </children>
368 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAhmIVybEemc87q3iJlCgw" routing="Rectilinear"/> 368 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAhmIVybEemc87q3iJlCgw" routing="Rectilinear"/>
369 <styles xmi:type="notation:FontStyle" xmi:id="_hAhmIlybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 369 <styles xmi:type="notation:FontStyle" xmi:id="_hAhmIlybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
370 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAhmI1ybEemc87q3iJlCgw" points="[-59, 50, -59, 108]$[-143, 50, -143, 108]$[-143, -106, -143, -48]$[-59, -106, -59, -48]"/> 370 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAhmI1ybEemc87q3iJlCgw" points="[59, 72, -361, -26]$[361, 72, -59, -26]"/>
371 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAiNMFybEemc87q3iJlCgw" id="(0.5,0.0)"/> 371 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAiNMFybEemc87q3iJlCgw" id="(0.5,0.0)"/>
372 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAiNMVybEemc87q3iJlCgw" id="(0.5,1.0)"/> 372 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAiNMVybEemc87q3iJlCgw" id="(0.5,1.0)"/>
373 </edges> 373 </edges>
374 <edges xmi:type="notation:Edge" xmi:id="_hAiNMlybEemc87q3iJlCgw" type="4001" element="_g_g5gFybEemc87q3iJlCgw" source="_g_o1UFybEemc87q3iJlCgw" target="_g_qDcFybEemc87q3iJlCgw"> 374 <edges xmi:type="notation:Edge" xmi:id="_hAiNMlybEemc87q3iJlCgw" type="4001" element="_g_g5gFybEemc87q3iJlCgw" source="_g_o1UFybEemc87q3iJlCgw" target="_g_qDcFybEemc87q3iJlCgw">
375 <children xmi:type="notation:Node" xmi:id="_hAiNNlybEemc87q3iJlCgw" type="6001"> 375 <children xmi:type="notation:Node" xmi:id="_hAiNNlybEemc87q3iJlCgw" type="6001">
376 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAiNN1ybEemc87q3iJlCgw" x="1" y="-10"/> 376 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAiNN1ybEemc87q3iJlCgw" y="-10"/>
377 </children> 377 </children>
378 <children xmi:type="notation:Node" xmi:id="_hAi0QFybEemc87q3iJlCgw" type="6002"> 378 <children xmi:type="notation:Node" xmi:id="_hAi0QFybEemc87q3iJlCgw" type="6002">
379 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAi0QVybEemc87q3iJlCgw" y="10"/> 379 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAi0QVybEemc87q3iJlCgw" x="-1" y="18"/>
380 </children> 380 </children>
381 <children xmi:type="notation:Node" xmi:id="_hAi0QlybEemc87q3iJlCgw" type="6003"> 381 <children xmi:type="notation:Node" xmi:id="_hAi0QlybEemc87q3iJlCgw" type="6003">
382 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAi0Q1ybEemc87q3iJlCgw" y="-10"/> 382 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAi0Q1ybEemc87q3iJlCgw" x="-34" y="12"/>
383 </children> 383 </children>
384 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAiNM1ybEemc87q3iJlCgw" routing="Rectilinear"/> 384 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hAiNM1ybEemc87q3iJlCgw" routing="Rectilinear"/>
385 <styles xmi:type="notation:FontStyle" xmi:id="_hAiNNFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/> 385 <styles xmi:type="notation:FontStyle" xmi:id="_hAiNNFybEemc87q3iJlCgw" fontName="Segoe UI" fontHeight="8"/>
386 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAiNNVybEemc87q3iJlCgw" points="[59, 50, 59, 108]$[130, 50, 130, 108]$[130, -106, 130, -48]$[59, -106, 59, -48]"/> 386 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hAiNNVybEemc87q3iJlCgw" points="[59, 12, -361, -86]$[361, 12, -59, -86]"/>
387 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAi0RFybEemc87q3iJlCgw" id="(0.5,0.0)"/> 387 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAi0RFybEemc87q3iJlCgw" id="(0.5,0.0)"/>
388 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAi0RVybEemc87q3iJlCgw" id="(0.5,1.0)"/> 388 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hAi0RVybEemc87q3iJlCgw" id="(0.5,1.0)"/>
389 </edges> 389 </edges>
@@ -392,6 +392,9 @@
392 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-GkQFybEemc87q3iJlCgw" name="Pseudostate" tooltipText="" outgoingEdges="_g_fEUFybEemc87q3iJlCgw" incomingEdges="_g_V6ZlybEemc87q3iJlCgw _g_V6bVybEemc87q3iJlCgw _g_ay41ybEemc87q3iJlCgw _g_coEFybEemc87q3iJlCgw" width="12" height="10"> 392 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-GkQFybEemc87q3iJlCgw" name="Pseudostate" tooltipText="" outgoingEdges="_g_fEUFybEemc87q3iJlCgw" incomingEdges="_g_V6ZlybEemc87q3iJlCgw _g_V6bVybEemc87q3iJlCgw _g_ay41ybEemc87q3iJlCgw _g_coEFybEemc87q3iJlCgw" width="12" height="10">
393 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Pseudostate"/> 393 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Pseudostate"/>
394 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Pseudostate"/> 394 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Pseudostate"/>
395 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
396 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
397 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
395 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-NR8FybEemc87q3iJlCgw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228"> 398 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-NR8FybEemc87q3iJlCgw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
396 <labelFormat>italic</labelFormat> 399 <labelFormat>italic</labelFormat>
397 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/> 400 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
@@ -401,6 +404,9 @@
401 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-SKcFybEemc87q3iJlCgw" name="Vertex" tooltipText="" outgoingEdges="_g_frY1ybEemc87q3iJlCgw _g_g5gFybEemc87q3iJlCgw" incomingEdges="_g_JtIFybEemc87q3iJlCgw _g_S3EFybEemc87q3iJlCgw _g_fEUFybEemc87q3iJlCgw" width="12" height="10"> 404 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-SKcFybEemc87q3iJlCgw" name="Vertex" tooltipText="" outgoingEdges="_g_frY1ybEemc87q3iJlCgw _g_g5gFybEemc87q3iJlCgw" incomingEdges="_g_JtIFybEemc87q3iJlCgw _g_S3EFybEemc87q3iJlCgw _g_fEUFybEemc87q3iJlCgw" width="12" height="10">
402 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Vertex"/> 405 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Vertex"/>
403 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Vertex"/> 406 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Vertex"/>
407 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
408 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
409 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
404 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-SxgFybEemc87q3iJlCgw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228"> 410 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-SxgFybEemc87q3iJlCgw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
405 <labelFormat>italic</labelFormat> 411 <labelFormat>italic</labelFormat>
406 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/> 412 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
@@ -410,6 +416,9 @@
410 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-T_oFybEemc87q3iJlCgw" name="Region" tooltipText="" outgoingEdges="_g_JtIFybEemc87q3iJlCgw" incomingEdges="_g_MweVybEemc87q3iJlCgw" width="12" height="10"> 416 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-T_oFybEemc87q3iJlCgw" name="Region" tooltipText="" outgoingEdges="_g_JtIFybEemc87q3iJlCgw" incomingEdges="_g_MweVybEemc87q3iJlCgw" width="12" height="10">
411 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Region"/> 417 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Region"/>
412 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Region"/> 418 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Region"/>
419 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
420 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
421 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
413 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-VNwFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 422 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-VNwFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
414 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> 423 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
415 </ownedStyle> 424 </ownedStyle>
@@ -418,6 +427,9 @@
418 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-Wb4FybEemc87q3iJlCgw" name="Transition" tooltipText="" incomingEdges="_g_frY1ybEemc87q3iJlCgw _g_g5gFybEemc87q3iJlCgw" width="12" height="10"> 427 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-Wb4FybEemc87q3iJlCgw" name="Transition" tooltipText="" incomingEdges="_g_frY1ybEemc87q3iJlCgw _g_g5gFybEemc87q3iJlCgw" width="12" height="10">
419 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Transition"/> 428 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Transition"/>
420 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Transition"/> 429 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Transition"/>
430 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
431 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
432 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
421 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-XC8FybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 433 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-XC8FybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
422 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> 434 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
423 </ownedStyle> 435 </ownedStyle>
@@ -426,6 +438,9 @@
426 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-YREFybEemc87q3iJlCgw" name="Statechart" tooltipText="" outgoingEdges="_g_cBAFybEemc87q3iJlCgw" width="12" height="10"> 438 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-YREFybEemc87q3iJlCgw" name="Statechart" tooltipText="" outgoingEdges="_g_cBAFybEemc87q3iJlCgw" width="12" height="10">
427 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Statechart"/> 439 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Statechart"/>
428 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Statechart"/> 440 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Statechart"/>
441 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
442 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
443 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
429 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-ZfMFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 444 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-ZfMFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
430 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> 445 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
431 </ownedStyle> 446 </ownedStyle>
@@ -434,6 +449,9 @@
434 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-aGQFybEemc87q3iJlCgw" name="Entry" tooltipText="" outgoingEdges="_g_ay41ybEemc87q3iJlCgw" width="12" height="10"> 449 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-aGQFybEemc87q3iJlCgw" name="Entry" tooltipText="" outgoingEdges="_g_ay41ybEemc87q3iJlCgw" width="12" height="10">
435 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Entry"/> 450 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Entry"/>
436 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Entry"/> 451 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Entry"/>
452 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
453 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
454 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
437 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-atUFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 455 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-atUFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
438 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> 456 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
439 </ownedStyle> 457 </ownedStyle>
@@ -442,6 +460,9 @@
442 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-b7cFybEemc87q3iJlCgw" name="Synchronization" tooltipText="" outgoingEdges="_g_coEFybEemc87q3iJlCgw" width="12" height="10"> 460 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-b7cFybEemc87q3iJlCgw" name="Synchronization" tooltipText="" outgoingEdges="_g_coEFybEemc87q3iJlCgw" width="12" height="10">
443 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Synchronization"/> 461 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Synchronization"/>
444 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Synchronization"/> 462 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Synchronization"/>
463 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
464 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
465 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
445 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-cigFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 466 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-cigFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
446 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> 467 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
447 </ownedStyle> 468 </ownedStyle>
@@ -450,6 +471,9 @@
450 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-dJkVybEemc87q3iJlCgw" name="State" tooltipText="" outgoingEdges="_g_dPI1ybEemc87q3iJlCgw _g_edQFybEemc87q3iJlCgw" width="12" height="10"> 471 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-dJkVybEemc87q3iJlCgw" name="State" tooltipText="" outgoingEdges="_g_dPI1ybEemc87q3iJlCgw _g_edQFybEemc87q3iJlCgw" width="12" height="10">
451 <target xmi:type="ecore:EClass" href="yakindu.ecore#//State"/> 472 <target xmi:type="ecore:EClass" href="yakindu.ecore#//State"/>
452 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//State"/> 473 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//State"/>
474 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
475 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
476 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
453 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-e-wFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 477 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-e-wFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
454 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> 478 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
455 </ownedStyle> 479 </ownedStyle>
@@ -458,6 +482,9 @@
458 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-fl0FybEemc87q3iJlCgw" name="RegularState" tooltipText="" outgoingEdges="_g_S3EFybEemc87q3iJlCgw" incomingEdges="_g_aL0FybEemc87q3iJlCgw _g_dPI1ybEemc87q3iJlCgw" width="12" height="10"> 482 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-fl0FybEemc87q3iJlCgw" name="RegularState" tooltipText="" outgoingEdges="_g_S3EFybEemc87q3iJlCgw" incomingEdges="_g_aL0FybEemc87q3iJlCgw _g_dPI1ybEemc87q3iJlCgw" width="12" height="10">
459 <target xmi:type="ecore:EClass" href="yakindu.ecore#//RegularState"/> 483 <target xmi:type="ecore:EClass" href="yakindu.ecore#//RegularState"/>
460 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//RegularState"/> 484 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//RegularState"/>
485 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
486 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
487 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
461 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-gz8FybEemc87q3iJlCgw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228"> 488 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-gz8FybEemc87q3iJlCgw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
462 <labelFormat>italic</labelFormat> 489 <labelFormat>italic</labelFormat>
463 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/> 490 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
@@ -467,6 +494,9 @@
467 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-hbAVybEemc87q3iJlCgw" name="CompositeElement" tooltipText="" outgoingEdges="_g_MweVybEemc87q3iJlCgw" incomingEdges="_g_cBAFybEemc87q3iJlCgw _g_edQFybEemc87q3iJlCgw" width="12" height="10"> 494 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-hbAVybEemc87q3iJlCgw" name="CompositeElement" tooltipText="" outgoingEdges="_g_MweVybEemc87q3iJlCgw" incomingEdges="_g_cBAFybEemc87q3iJlCgw _g_edQFybEemc87q3iJlCgw" width="12" height="10">
468 <target xmi:type="ecore:EClass" href="yakindu.ecore#//CompositeElement"/> 495 <target xmi:type="ecore:EClass" href="yakindu.ecore#//CompositeElement"/>
469 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//CompositeElement"/> 496 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//CompositeElement"/>
497 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
498 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
499 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
470 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-iCEFybEemc87q3iJlCgw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228"> 500 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-iCEFybEemc87q3iJlCgw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
471 <labelFormat>italic</labelFormat> 501 <labelFormat>italic</labelFormat>
472 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/> 502 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
@@ -476,6 +506,9 @@
476 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-jQMFybEemc87q3iJlCgw" name="Choice" tooltipText="" outgoingEdges="_g_V6ZlybEemc87q3iJlCgw" width="12" height="10"> 506 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-jQMFybEemc87q3iJlCgw" name="Choice" tooltipText="" outgoingEdges="_g_V6ZlybEemc87q3iJlCgw" width="12" height="10">
477 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Choice"/> 507 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Choice"/>
478 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Choice"/> 508 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Choice"/>
509 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
510 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
511 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
479 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-keUFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 512 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-keUFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
480 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> 513 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
481 </ownedStyle> 514 </ownedStyle>
@@ -484,6 +517,9 @@
484 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-lscFybEemc87q3iJlCgw" name="Exit" tooltipText="" outgoingEdges="_g_V6bVybEemc87q3iJlCgw" width="12" height="10"> 517 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-lscFybEemc87q3iJlCgw" name="Exit" tooltipText="" outgoingEdges="_g_V6bVybEemc87q3iJlCgw" width="12" height="10">
485 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Exit"/> 518 <target xmi:type="ecore:EClass" href="yakindu.ecore#//Exit"/>
486 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Exit"/> 519 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//Exit"/>
520 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
521 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
522 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
487 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-mTgFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 523 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-mTgFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
488 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> 524 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
489 </ownedStyle> 525 </ownedStyle>
@@ -492,6 +528,9 @@
492 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-m6kFybEemc87q3iJlCgw" name="FinalState" tooltipText="" outgoingEdges="_g_aL0FybEemc87q3iJlCgw" width="12" height="10"> 528 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_g-m6kFybEemc87q3iJlCgw" name="FinalState" tooltipText="" outgoingEdges="_g_aL0FybEemc87q3iJlCgw" width="12" height="10">
493 <target xmi:type="ecore:EClass" href="yakindu.ecore#//FinalState"/> 529 <target xmi:type="ecore:EClass" href="yakindu.ecore#//FinalState"/>
494 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//FinalState"/> 530 <semanticElements xmi:type="ecore:EClass" href="yakindu.ecore#//FinalState"/>
531 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
532 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
533 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
495 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-nhoFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 534 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_g-nhoFybEemc87q3iJlCgw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
496 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> 535 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
497 </ownedStyle> 536 </ownedStyle>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml
index f9d517b9..c0c367a1 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml
@@ -20,13 +20,6 @@
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.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 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.rootElements"/>
27 <query-specification fqn="ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.parent"/>
28 </group>
29 </extension>
30 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features"> 23 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
31 <wellbehaving-derived-feature classifier-name="FunctionalElement" feature-name="model" package-nsUri="FamMetamodel"/> 24 <wellbehaving-derived-feature classifier-name="FunctionalElement" feature-name="model" package-nsUri="FamMetamodel"/>
32 </extension> 25 </extension>
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
deleted file mode 100644
index 69a6b9f4..00000000
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/TerminatorAndInformation.java
+++ /dev/null
@@ -1,747 +0,0 @@
1/**
2 * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql
3 */
4package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries;
5
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink;
8import java.util.Arrays;
9import java.util.Collection;
10import java.util.LinkedHashSet;
11import java.util.List;
12import java.util.Objects;
13import java.util.Optional;
14import java.util.Set;
15import java.util.function.Consumer;
16import java.util.stream.Collectors;
17import java.util.stream.Stream;
18import org.apache.log4j.Logger;
19import org.eclipse.emf.ecore.EClass;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
29import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * {@literal @}Constraint(message="terminatorAndInformation", severity="error", key={T})
50 * pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
51 * FunctionalOutput.outgoingLinks(Out,I);
52 * FunctionalOutput.terminator(Out,T);
53 * } or {
54 * InformationLink.to(I,In);
55 * FunctionalInput.terminator(In,T);
56 * }
57 * </pre></code>
58 *
59 * @see Matcher
60 * @see Match
61 *
62 */
63@SuppressWarnings("all")
64public final class TerminatorAndInformation extends BaseGeneratedEMFQuerySpecification<TerminatorAndInformation.Matcher> {
65 /**
66 * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.terminatorAndInformation pattern,
67 * to be used in conjunction with {@link Matcher}.
68 *
69 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
70 * Each instance is a (possibly partial) substitution of pattern parameters,
71 * usable to represent a match of the pattern in the result of a query,
72 * or to specify the bound (fixed) input parameters when issuing a query.
73 *
74 * @see Matcher
75 *
76 */
77 public static abstract class Match extends BasePatternMatch {
78 private FAMTerminator fT;
79
80 private InformationLink fI;
81
82 private static List<String> parameterNames = makeImmutableList("T", "I");
83
84 private Match(final FAMTerminator pT, final InformationLink pI) {
85 this.fT = pT;
86 this.fI = pI;
87 }
88
89 @Override
90 public Object get(final String parameterName) {
91 if ("T".equals(parameterName)) return this.fT;
92 if ("I".equals(parameterName)) return this.fI;
93 return null;
94 }
95
96 public FAMTerminator getT() {
97 return this.fT;
98 }
99
100 public InformationLink getI() {
101 return this.fI;
102 }
103
104 @Override
105 public boolean set(final String parameterName, final Object newValue) {
106 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
107 if ("T".equals(parameterName) ) {
108 this.fT = (FAMTerminator) newValue;
109 return true;
110 }
111 if ("I".equals(parameterName) ) {
112 this.fI = (InformationLink) newValue;
113 return true;
114 }
115 return false;
116 }
117
118 public void setT(final FAMTerminator pT) {
119 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
120 this.fT = pT;
121 }
122
123 public void setI(final InformationLink pI) {
124 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
125 this.fI = pI;
126 }
127
128 @Override
129 public String patternName() {
130 return "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.terminatorAndInformation";
131 }
132
133 @Override
134 public List<String> parameterNames() {
135 return TerminatorAndInformation.Match.parameterNames;
136 }
137
138 @Override
139 public Object[] toArray() {
140 return new Object[]{fT, fI};
141 }
142
143 @Override
144 public TerminatorAndInformation.Match toImmutable() {
145 return isMutable() ? newMatch(fT, fI) : this;
146 }
147
148 @Override
149 public String prettyPrint() {
150 StringBuilder result = new StringBuilder();
151 result.append("\"T\"=" + prettyPrintValue(fT) + ", ");
152 result.append("\"I\"=" + prettyPrintValue(fI));
153 return result.toString();
154 }
155
156 @Override
157 public int hashCode() {
158 return Objects.hash(fT, fI);
159 }
160
161 @Override
162 public boolean equals(final Object obj) {
163 if (this == obj)
164 return true;
165 if (obj == null) {
166 return false;
167 }
168 if ((obj instanceof TerminatorAndInformation.Match)) {
169 TerminatorAndInformation.Match other = (TerminatorAndInformation.Match) obj;
170 return Objects.equals(fT, other.fT) && Objects.equals(fI, other.fI);
171 } else {
172 // this should be infrequent
173 if (!(obj instanceof IPatternMatch)) {
174 return false;
175 }
176 IPatternMatch otherSig = (IPatternMatch) obj;
177 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
178 }
179 }
180
181 @Override
182 public TerminatorAndInformation specification() {
183 return TerminatorAndInformation.instance();
184 }
185
186 /**
187 * Returns an empty, mutable match.
188 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
189 *
190 * @return the empty match.
191 *
192 */
193 public static TerminatorAndInformation.Match newEmptyMatch() {
194 return new Mutable(null, null);
195 }
196
197 /**
198 * Returns a mutable (partial) match.
199 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
200 *
201 * @param pT the fixed value of pattern parameter T, or null if not bound.
202 * @param pI the fixed value of pattern parameter I, or null if not bound.
203 * @return the new, mutable (partial) match object.
204 *
205 */
206 public static TerminatorAndInformation.Match newMutableMatch(final FAMTerminator pT, final InformationLink pI) {
207 return new Mutable(pT, pI);
208 }
209
210 /**
211 * Returns a new (partial) match.
212 * This can be used e.g. to call the matcher with a partial match.
213 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
214 * @param pT the fixed value of pattern parameter T, or null if not bound.
215 * @param pI the fixed value of pattern parameter I, or null if not bound.
216 * @return the (partial) match object.
217 *
218 */
219 public static TerminatorAndInformation.Match newMatch(final FAMTerminator pT, final InformationLink pI) {
220 return new Immutable(pT, pI);
221 }
222
223 private static final class Mutable extends TerminatorAndInformation.Match {
224 Mutable(final FAMTerminator pT, final InformationLink pI) {
225 super(pT, pI);
226 }
227
228 @Override
229 public boolean isMutable() {
230 return true;
231 }
232 }
233
234 private static final class Immutable extends TerminatorAndInformation.Match {
235 Immutable(final FAMTerminator pT, final InformationLink pI) {
236 super(pT, pI);
237 }
238
239 @Override
240 public boolean isMutable() {
241 return false;
242 }
243 }
244 }
245
246 /**
247 * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.terminatorAndInformation pattern,
248 * providing pattern-specific query methods.
249 *
250 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
251 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
252 *
253 * <p>Matches of the pattern will be represented as {@link Match}.
254 *
255 * <p>Original source:
256 * <code><pre>
257 * {@literal @}Constraint(message="terminatorAndInformation", severity="error", key={T})
258 * pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
259 * FunctionalOutput.outgoingLinks(Out,I);
260 * FunctionalOutput.terminator(Out,T);
261 * } or {
262 * InformationLink.to(I,In);
263 * FunctionalInput.terminator(In,T);
264 * }
265 * </pre></code>
266 *
267 * @see Match
268 * @see TerminatorAndInformation
269 *
270 */
271 public static class Matcher extends BaseMatcher<TerminatorAndInformation.Match> {
272 /**
273 * Initializes the pattern matcher within an existing VIATRA Query engine.
274 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
275 *
276 * @param engine the existing VIATRA Query engine in which this matcher will be created.
277 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
278 *
279 */
280 public static TerminatorAndInformation.Matcher on(final ViatraQueryEngine engine) {
281 // check if matcher already exists
282 Matcher matcher = engine.getExistingMatcher(querySpecification());
283 if (matcher == null) {
284 matcher = (Matcher)engine.getMatcher(querySpecification());
285 }
286 return matcher;
287 }
288
289 /**
290 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
291 * @return an initialized matcher
292 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
293 *
294 */
295 public static TerminatorAndInformation.Matcher create() {
296 return new Matcher();
297 }
298
299 private final static int POSITION_T = 0;
300
301 private final static int POSITION_I = 1;
302
303 private final static Logger LOGGER = ViatraQueryLoggingUtil.getLogger(TerminatorAndInformation.Matcher.class);
304
305 /**
306 * Initializes the pattern matcher within an existing VIATRA Query engine.
307 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
308 *
309 * @param engine the existing VIATRA Query engine in which this matcher will be created.
310 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
311 *
312 */
313 private Matcher() {
314 super(querySpecification());
315 }
316
317 /**
318 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
319 * @param pT the fixed value of pattern parameter T, or null if not bound.
320 * @param pI the fixed value of pattern parameter I, or null if not bound.
321 * @return matches represented as a Match object.
322 *
323 */
324 public Collection<TerminatorAndInformation.Match> getAllMatches(final FAMTerminator pT, final InformationLink pI) {
325 return rawStreamAllMatches(new Object[]{pT, pI}).collect(Collectors.toSet());
326 }
327
328 /**
329 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
330 * </p>
331 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
332 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
333 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
334 * @param pT the fixed value of pattern parameter T, or null if not bound.
335 * @param pI the fixed value of pattern parameter I, or null if not bound.
336 * @return a stream of matches represented as a Match object.
337 *
338 */
339 public Stream<TerminatorAndInformation.Match> streamAllMatches(final FAMTerminator pT, final InformationLink pI) {
340 return rawStreamAllMatches(new Object[]{pT, pI});
341 }
342
343 /**
344 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
345 * Neither determinism nor randomness of selection is guaranteed.
346 * @param pT the fixed value of pattern parameter T, or null if not bound.
347 * @param pI the fixed value of pattern parameter I, or null if not bound.
348 * @return a match represented as a Match object, or null if no match is found.
349 *
350 */
351 public Optional<TerminatorAndInformation.Match> getOneArbitraryMatch(final FAMTerminator pT, final InformationLink pI) {
352 return rawGetOneArbitraryMatch(new Object[]{pT, pI});
353 }
354
355 /**
356 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
357 * under any possible substitution of the unspecified parameters (if any).
358 * @param pT the fixed value of pattern parameter T, or null if not bound.
359 * @param pI the fixed value of pattern parameter I, or null if not bound.
360 * @return true if the input is a valid (partial) match of the pattern.
361 *
362 */
363 public boolean hasMatch(final FAMTerminator pT, final InformationLink pI) {
364 return rawHasMatch(new Object[]{pT, pI});
365 }
366
367 /**
368 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
369 * @param pT the fixed value of pattern parameter T, or null if not bound.
370 * @param pI the fixed value of pattern parameter I, or null if not bound.
371 * @return the number of pattern matches found.
372 *
373 */
374 public int countMatches(final FAMTerminator pT, final InformationLink pI) {
375 return rawCountMatches(new Object[]{pT, pI});
376 }
377
378 /**
379 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
380 * Neither determinism nor randomness of selection is guaranteed.
381 * @param pT the fixed value of pattern parameter T, or null if not bound.
382 * @param pI the fixed value of pattern parameter I, or null if not bound.
383 * @param processor the action that will process the selected match.
384 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
385 *
386 */
387 public boolean forOneArbitraryMatch(final FAMTerminator pT, final InformationLink pI, final Consumer<? super TerminatorAndInformation.Match> processor) {
388 return rawForOneArbitraryMatch(new Object[]{pT, pI}, processor);
389 }
390
391 /**
392 * Returns a new (partial) match.
393 * This can be used e.g. to call the matcher with a partial match.
394 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
395 * @param pT the fixed value of pattern parameter T, or null if not bound.
396 * @param pI the fixed value of pattern parameter I, or null if not bound.
397 * @return the (partial) match object.
398 *
399 */
400 public TerminatorAndInformation.Match newMatch(final FAMTerminator pT, final InformationLink pI) {
401 return TerminatorAndInformation.Match.newMatch(pT, pI);
402 }
403
404 /**
405 * Retrieve the set of values that occur in matches for T.
406 * @return the Set of all values or empty set if there are no matches
407 *
408 */
409 protected Stream<FAMTerminator> rawStreamAllValuesOfT(final Object[] parameters) {
410 return rawStreamAllValues(POSITION_T, parameters).map(FAMTerminator.class::cast);
411 }
412
413 /**
414 * Retrieve the set of values that occur in matches for T.
415 * @return the Set of all values or empty set if there are no matches
416 *
417 */
418 public Set<FAMTerminator> getAllValuesOfT() {
419 return rawStreamAllValuesOfT(emptyArray()).collect(Collectors.toSet());
420 }
421
422 /**
423 * Retrieve the set of values that occur in matches for T.
424 * @return the Set of all values or empty set if there are no matches
425 *
426 */
427 public Stream<FAMTerminator> streamAllValuesOfT() {
428 return rawStreamAllValuesOfT(emptyArray());
429 }
430
431 /**
432 * Retrieve the set of values that occur in matches for T.
433 * </p>
434 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
435 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
436 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
437 *
438 * @return the Stream of all values or empty set if there are no matches
439 *
440 */
441 public Stream<FAMTerminator> streamAllValuesOfT(final TerminatorAndInformation.Match partialMatch) {
442 return rawStreamAllValuesOfT(partialMatch.toArray());
443 }
444
445 /**
446 * Retrieve the set of values that occur in matches for T.
447 * </p>
448 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
449 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
450 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
451 *
452 * @return the Stream of all values or empty set if there are no matches
453 *
454 */
455 public Stream<FAMTerminator> streamAllValuesOfT(final InformationLink pI) {
456 return rawStreamAllValuesOfT(new Object[]{null, pI});
457 }
458
459 /**
460 * Retrieve the set of values that occur in matches for T.
461 * @return the Set of all values or empty set if there are no matches
462 *
463 */
464 public Set<FAMTerminator> getAllValuesOfT(final TerminatorAndInformation.Match partialMatch) {
465 return rawStreamAllValuesOfT(partialMatch.toArray()).collect(Collectors.toSet());
466 }
467
468 /**
469 * Retrieve the set of values that occur in matches for T.
470 * @return the Set of all values or empty set if there are no matches
471 *
472 */
473 public Set<FAMTerminator> getAllValuesOfT(final InformationLink pI) {
474 return rawStreamAllValuesOfT(new Object[]{null, pI}).collect(Collectors.toSet());
475 }
476
477 /**
478 * Retrieve the set of values that occur in matches for I.
479 * @return the Set of all values or empty set if there are no matches
480 *
481 */
482 protected Stream<InformationLink> rawStreamAllValuesOfI(final Object[] parameters) {
483 return rawStreamAllValues(POSITION_I, parameters).map(InformationLink.class::cast);
484 }
485
486 /**
487 * Retrieve the set of values that occur in matches for I.
488 * @return the Set of all values or empty set if there are no matches
489 *
490 */
491 public Set<InformationLink> getAllValuesOfI() {
492 return rawStreamAllValuesOfI(emptyArray()).collect(Collectors.toSet());
493 }
494
495 /**
496 * Retrieve the set of values that occur in matches for I.
497 * @return the Set of all values or empty set if there are no matches
498 *
499 */
500 public Stream<InformationLink> streamAllValuesOfI() {
501 return rawStreamAllValuesOfI(emptyArray());
502 }
503
504 /**
505 * Retrieve the set of values that occur in matches for I.
506 * </p>
507 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
508 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
509 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
510 *
511 * @return the Stream of all values or empty set if there are no matches
512 *
513 */
514 public Stream<InformationLink> streamAllValuesOfI(final TerminatorAndInformation.Match partialMatch) {
515 return rawStreamAllValuesOfI(partialMatch.toArray());
516 }
517
518 /**
519 * Retrieve the set of values that occur in matches for I.
520 * </p>
521 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
522 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
523 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
524 *
525 * @return the Stream of all values or empty set if there are no matches
526 *
527 */
528 public Stream<InformationLink> streamAllValuesOfI(final FAMTerminator pT) {
529 return rawStreamAllValuesOfI(new Object[]{pT, null});
530 }
531
532 /**
533 * Retrieve the set of values that occur in matches for I.
534 * @return the Set of all values or empty set if there are no matches
535 *
536 */
537 public Set<InformationLink> getAllValuesOfI(final TerminatorAndInformation.Match partialMatch) {
538 return rawStreamAllValuesOfI(partialMatch.toArray()).collect(Collectors.toSet());
539 }
540
541 /**
542 * Retrieve the set of values that occur in matches for I.
543 * @return the Set of all values or empty set if there are no matches
544 *
545 */
546 public Set<InformationLink> getAllValuesOfI(final FAMTerminator pT) {
547 return rawStreamAllValuesOfI(new Object[]{pT, null}).collect(Collectors.toSet());
548 }
549
550 @Override
551 protected TerminatorAndInformation.Match tupleToMatch(final Tuple t) {
552 try {
553 return TerminatorAndInformation.Match.newMatch((FAMTerminator) t.get(POSITION_T), (InformationLink) t.get(POSITION_I));
554 } catch(ClassCastException e) {
555 LOGGER.error("Element(s) in tuple not properly typed!",e);
556 return null;
557 }
558 }
559
560 @Override
561 protected TerminatorAndInformation.Match arrayToMatch(final Object[] match) {
562 try {
563 return TerminatorAndInformation.Match.newMatch((FAMTerminator) match[POSITION_T], (InformationLink) match[POSITION_I]);
564 } catch(ClassCastException e) {
565 LOGGER.error("Element(s) in array not properly typed!",e);
566 return null;
567 }
568 }
569
570 @Override
571 protected TerminatorAndInformation.Match arrayToMatchMutable(final Object[] match) {
572 try {
573 return TerminatorAndInformation.Match.newMutableMatch((FAMTerminator) match[POSITION_T], (InformationLink) match[POSITION_I]);
574 } catch(ClassCastException e) {
575 LOGGER.error("Element(s) in array not properly typed!",e);
576 return null;
577 }
578 }
579
580 /**
581 * @return the singleton instance of the query specification of this pattern
582 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
583 *
584 */
585 public static IQuerySpecification<TerminatorAndInformation.Matcher> querySpecification() {
586 return TerminatorAndInformation.instance();
587 }
588 }
589
590 private TerminatorAndInformation() {
591 super(GeneratedPQuery.INSTANCE);
592 }
593
594 /**
595 * @return the singleton instance of the query specification
596 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
597 *
598 */
599 public static TerminatorAndInformation instance() {
600 try{
601 return LazyHolder.INSTANCE;
602 } catch (ExceptionInInitializerError err) {
603 throw processInitializerError(err);
604 }
605 }
606
607 @Override
608 protected TerminatorAndInformation.Matcher instantiate(final ViatraQueryEngine engine) {
609 return TerminatorAndInformation.Matcher.on(engine);
610 }
611
612 @Override
613 public TerminatorAndInformation.Matcher instantiate() {
614 return TerminatorAndInformation.Matcher.create();
615 }
616
617 @Override
618 public TerminatorAndInformation.Match newEmptyMatch() {
619 return TerminatorAndInformation.Match.newEmptyMatch();
620 }
621
622 @Override
623 public TerminatorAndInformation.Match newMatch(final Object... parameters) {
624 return TerminatorAndInformation.Match.newMatch((ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator) parameters[0], (ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink) parameters[1]);
625 }
626
627 /**
628 * Inner class allowing the singleton instance of {@link JvmGenericType: ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.TerminatorAndInformation (visibility: PUBLIC, simpleName: TerminatorAndInformation, identifier: ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.TerminatorAndInformation, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
629 * <b>not</b> at the class load time of the outer class,
630 * but rather at the first call to {@link JvmGenericType: ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.TerminatorAndInformation (visibility: PUBLIC, simpleName: TerminatorAndInformation, identifier: ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.TerminatorAndInformation, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
631 *
632 * <p> This workaround is required e.g. to support recursion.
633 *
634 */
635 private static class LazyHolder {
636 private final static TerminatorAndInformation INSTANCE = new TerminatorAndInformation();
637
638 /**
639 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
640 * This initialization order is required to support indirect recursion.
641 *
642 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
643 *
644 */
645 private final static Object STATIC_INITIALIZER = ensureInitialized();
646
647 public static Object ensureInitialized() {
648 INSTANCE.ensureInitializedInternal();
649 return null;
650 }
651 }
652
653 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
654 private final static TerminatorAndInformation.GeneratedPQuery INSTANCE = new GeneratedPQuery();
655
656 private final PParameter parameter_T = new PParameter("T", "ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("FamMetamodel", "FAMTerminator")), PParameterDirection.INOUT);
657
658 private final PParameter parameter_I = new PParameter("I", "ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("FamMetamodel", "InformationLink")), PParameterDirection.INOUT);
659
660 private final List<PParameter> parameters = Arrays.asList(parameter_T, parameter_I);
661
662 private GeneratedPQuery() {
663 super(PVisibility.PUBLIC);
664 }
665
666 @Override
667 public String getFullyQualifiedName() {
668 return "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.terminatorAndInformation";
669 }
670
671 @Override
672 public List<String> getParameterNames() {
673 return Arrays.asList("T","I");
674 }
675
676 @Override
677 public List<PParameter> getParameters() {
678 return parameters;
679 }
680
681 @Override
682 public Set<PBody> doGetContainedBodies() {
683 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
684 Set<PBody> bodies = new LinkedHashSet<>();
685 {
686 PBody body = new PBody(this);
687 PVariable var_T = body.getOrCreateVariableByName("T");
688 PVariable var_I = body.getOrCreateVariableByName("I");
689 PVariable var_Out = body.getOrCreateVariableByName("Out");
690 new TypeConstraint(body, Tuples.flatTupleOf(var_T), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "FAMTerminator")));
691 new TypeConstraint(body, Tuples.flatTupleOf(var_I), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "InformationLink")));
692 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
693 new ExportedParameter(body, var_T, parameter_T),
694 new ExportedParameter(body, var_I, parameter_I)
695 ));
696 // FunctionalOutput.outgoingLinks(Out,I)
697 new TypeConstraint(body, Tuples.flatTupleOf(var_Out), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "FunctionalOutput")));
698 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
699 new TypeConstraint(body, Tuples.flatTupleOf(var_Out, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("FamMetamodel", "FunctionalOutput", "outgoingLinks")));
700 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "InformationLink")));
701 new Equality(body, var__virtual_0_, var_I);
702 // FunctionalOutput.terminator(Out,T)
703 new TypeConstraint(body, Tuples.flatTupleOf(var_Out), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "FunctionalOutput")));
704 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
705 new TypeConstraint(body, Tuples.flatTupleOf(var_Out, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("FamMetamodel", "FunctionalData", "terminator")));
706 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "FAMTerminator")));
707 new Equality(body, var__virtual_1_, var_T);
708 bodies.add(body);
709 }
710 {
711 PBody body = new PBody(this);
712 PVariable var_T = body.getOrCreateVariableByName("T");
713 PVariable var_I = body.getOrCreateVariableByName("I");
714 PVariable var_In = body.getOrCreateVariableByName("In");
715 new TypeConstraint(body, Tuples.flatTupleOf(var_T), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "FAMTerminator")));
716 new TypeConstraint(body, Tuples.flatTupleOf(var_I), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "InformationLink")));
717 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
718 new ExportedParameter(body, var_T, parameter_T),
719 new ExportedParameter(body, var_I, parameter_I)
720 ));
721 // InformationLink.to(I,In)
722 new TypeConstraint(body, Tuples.flatTupleOf(var_I), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "InformationLink")));
723 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
724 new TypeConstraint(body, Tuples.flatTupleOf(var_I, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("FamMetamodel", "InformationLink", "to")));
725 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "FunctionalInput")));
726 new Equality(body, var__virtual_0_, var_In);
727 // FunctionalInput.terminator(In,T)
728 new TypeConstraint(body, Tuples.flatTupleOf(var_In), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "FunctionalInput")));
729 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
730 new TypeConstraint(body, Tuples.flatTupleOf(var_In, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("FamMetamodel", "FunctionalData", "terminator")));
731 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("FamMetamodel", "FAMTerminator")));
732 new Equality(body, var__virtual_1_, var_T);
733 bodies.add(body);
734 }
735 {
736 PAnnotation annotation = new PAnnotation("Constraint");
737 annotation.addAttribute("message", "terminatorAndInformation");
738 annotation.addAttribute("severity", "error");
739 annotation.addAttribute("key", Arrays.asList(new Object[] {
740 new ParameterReference("T")
741 }));
742 addAnnotation(annotation);
743 }
744 return bodies;
745 }
746 }
747}
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.classpath b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.classpath
index 3f0838b6..f03a6d83 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.classpath
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.classpath
@@ -5,5 +5,6 @@
5 <classpathentry kind="src" path="src"/> 5 <classpathentry kind="src" path="src"/>
6 <classpathentry kind="src" path="src-gen"/> 6 <classpathentry kind="src" path="src-gen"/>
7 <classpathentry kind="src" path="xtend-gen"/> 7 <classpathentry kind="src" path="xtend-gen"/>
8 <classpathentry kind="src" path="queries"/>
8 <classpathentry kind="output" path="bin"/> 9 <classpathentry kind="output" path="bin"/>
9</classpath> 10</classpath>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/META-INF/MANIFEST.MF b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/META-INF/MANIFEST.MF
index 2ea274a4..8b69d9a8 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/META-INF/MANIFEST.MF
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/META-INF/MANIFEST.MF
@@ -3,7 +3,11 @@ Bundle-ManifestVersion: 2
3Bundle-Name: Test 3Bundle-Name: Test
4Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.vampire.test;singleton:=true 4Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.vampire.test;singleton:=true
5Bundle-Version: 1.0.0.qualifier 5Bundle-Version: 1.0.0.qualifier
6Export-Package: ca.mcgill.ecse.dslreasoner.vampire.queries 6Export-Package: ca.mcgill.ecse.dslreasoner.vampire.queries,
7 ca.mcgill.ecse.dslreasoner.vampire.test.queries.ecore,
8 ca.mcgill.ecse.dslreasoner.vampire.test.queries.fam,
9 ca.mcgill.ecse.dslreasoner.vampire.test.queries.filesystem,
10 ca.mcgill.ecse.dslreasoner.vampire.test.queries.yakindu
7Require-Bundle: org.eclipse.viatra.addon.querybasedfeatures.runtime, 11Require-Bundle: org.eclipse.viatra.addon.querybasedfeatures.runtime,
8 org.eclipse.emf.ecore, 12 org.eclipse.emf.ecore,
9 org.eclipse.viatra.query.runtime.rete, 13 org.eclipse.viatra.query.runtime.rete,
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FaModel.xmi b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM/FaModel.xmi
index cef17e1b..cef17e1b 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FaModel.xmi
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM/FaModel.xmi
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem
index 18e58ab0..4f0bbdb1 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.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">
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">
@@ -557,7 +559,8 @@
557 <elements name="Root literal FunctionType" definedInType="//@types.9"/> 559 <elements name="Root literal FunctionType" definedInType="//@types.9"/>
558 <elements name="Intermediate literal FunctionType" definedInType="//@types.9"/> 560 <elements name="Intermediate literal FunctionType" definedInType="//@types.9"/>
559 <elements name="Leaf literal FunctionType" definedInType="//@types.9"/> 561 <elements name="Leaf literal FunctionType" definedInType="//@types.9"/>
560 <containmentHierarchies typesOrderedInHierarchy="//@types.8 //@types.5 //@types.4 //@types.6 //@types.1 //@types.7 //@types.3 //@types.2 //@types.0" containmentRelations="//@relations.0 //@relations.3 //@relations.4 //@relations.8 //@relations.11 //@relations.12"/> 562 <elements name="o 1" definedInType="//@types.10"/>
563 <containmentHierarchies typesOrderedInHierarchy="//@types.1 //@types.5 //@types.6 //@types.3 //@types.8 //@types.7 //@types.0 //@types.2 //@types.4 //@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"/> 564 <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"/> 565 <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"/> 566 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.1" upper="1"/>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/vampireProblem.tptp b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/vampireProblem.tptp
deleted file mode 100644
index 3d49d42c..00000000
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/vampireProblem.tptp
+++ /dev/null
@@ -1,72 +0,0 @@
1% This is an initial Test Comment
2fof ( typeDef_FunctionType , axiom , ! [ A ] : ( t_FunctionType ( A ) <=> ( object ( A ) & ( ( e_Root_FunctionType ( A ) & ( ~ e_Intermediate_FunctionType ( A ) & ~ e_Leaf_FunctionType ( A ) ) ) | ( ( ~ e_Root_FunctionType ( A ) & ( e_Intermediate_FunctionType ( A ) & ~ e_Leaf_FunctionType ( A ) ) ) | ( ~ e_Root_FunctionType ( A ) & ( ~ e_Intermediate_FunctionType ( A ) & e_Leaf_FunctionType ( A ) ) ) ) ) ) ) ) .
3fof ( enumScope_FunctionType_Root , axiom , ! [ A ] : ( A = eo1 <=> e_Root_FunctionType ( A ) ) ) .
4fof ( enumScope_FunctionType_Intermediate , axiom , ! [ A ] : ( A = eo2 <=> e_Intermediate_FunctionType ( A ) ) ) .
5fof ( enumScope_FunctionType_Leaf , axiom , ! [ A ] : ( A = eo3 <=> e_Leaf_FunctionType ( A ) ) ) .
6fof ( notObjectHandler , axiom , ! [ A ] : ( ~ object ( A ) <=> ( ~ t_FunctionalElement ( A ) & ( ~ t_FunctionalArchitectureModel ( A ) & ( ~ t_Function ( A ) & ( ~ t_FAMTerminator ( A ) & ( ~ t_InformationLink ( A ) & ( ~ t_FunctionalInterface ( A ) & ( ~ t_FunctionalInput ( A ) & ( ~ t_FunctionalOutput ( A ) & ( ~ t_FunctionalData ( A ) & ~ t_FunctionType ( A ) ) ) ) ) ) ) ) ) ) ) ) .
7fof ( inheritanceHierarchyHandler , axiom , ! [ A ] : ( object ( A ) <=> ( ( t_FunctionalArchitectureModel ( A ) & ( ~ t_FunctionalInput ( A ) & ( ~ t_Function ( A ) & ( ~ t_FAMTerminator ( A ) & ( ~ t_FunctionType ( A ) & ( ~ t_FunctionalElement ( A ) & ( ~ t_FunctionalOutput ( A ) & ( ~ t_FunctionalData ( A ) & ( ~ t_InformationLink ( A ) & ~ t_FunctionalInterface ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ t_FunctionalArchitectureModel ( A ) & ( t_FunctionalInput ( A ) & ( ~ t_Function ( A ) & ( ~ t_FAMTerminator ( A ) & ( ~ t_FunctionType ( A ) & ( ~ t_FunctionalElement ( A ) & ( ~ t_FunctionalOutput ( A ) & ( t_FunctionalData ( A ) & ( ~ t_InformationLink ( A ) & ~ t_FunctionalInterface ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ t_FunctionalArchitectureModel ( A ) & ( ~ t_FunctionalInput ( A ) & ( t_Function ( A ) & ( ~ t_FAMTerminator ( A ) & ( ~ t_FunctionType ( A ) & ( t_FunctionalElement ( A ) & ( ~ t_FunctionalOutput ( A ) & ( ~ t_FunctionalData ( A ) & ( ~ t_InformationLink ( A ) & ~ t_FunctionalInterface ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ t_FunctionalArchitectureModel ( A ) & ( ~ t_FunctionalInput ( A ) & ( ~ t_Function ( A ) & ( t_FAMTerminator ( A ) & ( ~ t_FunctionType ( A ) & ( ~ t_FunctionalElement ( A ) & ( ~ t_FunctionalOutput ( A ) & ( ~ t_FunctionalData ( A ) & ( ~ t_InformationLink ( A ) & ~ t_FunctionalInterface ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ t_FunctionalArchitectureModel ( A ) & ( ~ t_FunctionalInput ( A ) & ( ~ t_Function ( A ) & ( ~ t_FAMTerminator ( A ) & ( t_FunctionType ( A ) & ( ~ t_FunctionalElement ( A ) & ( ~ t_FunctionalOutput ( A ) & ( ~ t_FunctionalData ( A ) & ( ~ t_InformationLink ( A ) & ~ t_FunctionalInterface ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ t_FunctionalArchitectureModel ( A ) & ( ~ t_FunctionalInput ( A ) & ( ~ t_Function ( A ) & ( ~ t_FAMTerminator ( A ) & ( ~ t_FunctionType ( A ) & ( ~ t_FunctionalElement ( A ) & ( t_FunctionalOutput ( A ) & ( t_FunctionalData ( A ) & ( ~ t_InformationLink ( A ) & ~ t_FunctionalInterface ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ t_FunctionalArchitectureModel ( A ) & ( ~ t_FunctionalInput ( A ) & ( ~ t_Function ( A ) & ( ~ t_FAMTerminator ( A ) & ( ~ t_FunctionType ( A ) & ( ~ t_FunctionalElement ( A ) & ( ~ t_FunctionalOutput ( A ) & ( ~ t_FunctionalData ( A ) & ( t_InformationLink ( A ) & ~ t_FunctionalInterface ( A ) ) ) ) ) ) ) ) ) ) | ( ~ t_FunctionalArchitectureModel ( A ) & ( ~ t_FunctionalInput ( A ) & ( ~ t_Function ( A ) & ( ~ t_FAMTerminator ( A ) & ( ~ t_FunctionType ( A ) & ( ~ t_FunctionalElement ( A ) & ( ~ t_FunctionalOutput ( A ) & ( ~ t_FunctionalData ( A ) & ( ~ t_InformationLink ( A ) & t_FunctionalInterface ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) .
8fof ( typeScope_min_object , axiom , ! [ A ] : ( ( A = o1 | ( A = o2 | ( A = o3 | ( A = o4 | ( A = eo1 | ( A = eo2 | A = eo3 ) ) ) ) ) ) => object ( A ) ) ) .
9fof ( typeScope_max_object , axiom , ! [ A ] : ( object ( A ) => ( A = eo1 | ( A = eo2 | ( A = eo3 | ( A = o1 | ( A = o2 | ( A = o3 | ( A = o4 | A = o5 ) ) ) ) ) ) ) ) ) .
10fof ( typeScope_min_t_Function , axiom , ! [ A ] : ( A = o2 => ( t_Function ( A ) & object ( A ) ) ) ) .
11fof ( typeScope_min_t_FunctionalOutput , axiom , ! [ A ] : ( ( A = o3 | ( A = o4 | A = o5 ) ) => ( t_FunctionalOutput ( A ) & object ( A ) ) ) ) .
12fof ( typeScope_min_t_FunctionalInterface , axiom , ! [ A ] : ( ( A = o6 | A = o7 ) => ( t_FunctionalInterface ( A ) & object ( A ) ) ) ) .
13fof ( typeScope_max_t_Function , axiom , ! [ A ] : ( ( t_Function ( A ) & object ( A ) ) => A = o2 ) ) .
14fof ( typeScope_max_t_FunctionalOutput , axiom , ! [ A ] : ( ( t_FunctionalOutput ( A ) & object ( A ) ) => ( A = o3 | ( A = o4 | A = o5 ) ) ) ) .
15fof ( t_uniqueness_eo1 , axiom , eo1 != eo2 & ( eo1 != eo3 & ( eo1 != o1 & ( eo1 != o2 & ( eo1 != o3 & ( eo1 != o4 & eo1 != o5 ) ) ) ) ) ) .
16fof ( t_uniqueness_eo2 , axiom , eo2 != eo3 & ( eo2 != o1 & ( eo2 != o2 & ( eo2 != o3 & ( eo2 != o4 & eo2 != o5 ) ) ) ) ) .
17fof ( t_uniqueness_eo3 , axiom , eo3 != o1 & ( eo3 != o2 & ( eo3 != o3 & ( eo3 != o4 & eo3 != o5 ) ) ) ) .
18fof ( t_uniqueness_o1 , axiom , o1 != o2 & ( o1 != o3 & ( o1 != o4 & o1 != o5 ) ) ) .
19fof ( t_uniqueness_o2 , axiom , o2 != o3 & ( o2 != o4 & o2 != o5 ) ) .
20fof ( t_uniqueness_o3 , axiom , o3 != o4 & o3 != o5 ) .
21fof ( t_uniqueness_o4 , axiom , o4 != o5 ) .
22fof ( compliance_interface_FunctionalElement , axiom , ! [ V_0 , V_1 ] : ( r_interface_FunctionalElement ( V_0 , V_1 ) => ( t_FunctionalElement ( V_0 ) & t_FunctionalInterface ( V_1 ) ) ) ) .
23fof ( compliance_model_FunctionalElement , axiom , ! [ V_0 , V_1 ] : ( r_model_FunctionalElement ( V_0 , V_1 ) => ( t_FunctionalElement ( V_0 ) & t_FunctionalArchitectureModel ( V_1 ) ) ) ) .
24fof ( compliance_parent_FunctionalElement , axiom , ! [ V_0 , V_1 ] : ( r_parent_FunctionalElement ( V_0 , V_1 ) => ( t_FunctionalElement ( V_0 ) & t_Function ( V_1 ) ) ) ) .
25fof ( compliance_rootElements_FunctionalArchitectureModel , axiom , ! [ V_0 , V_1 ] : ( r_rootElements_FunctionalArchitectureModel ( V_0 , V_1 ) => ( t_FunctionalArchitectureModel ( V_0 ) & t_FunctionalElement ( V_1 ) ) ) ) .
26fof ( compliance_subElements_Function , axiom , ! [ V_0 , V_1 ] : ( r_subElements_Function ( V_0 , V_1 ) => ( t_Function ( V_0 ) & t_FunctionalElement ( V_1 ) ) ) ) .
27fof ( compliance_data_FAMTerminator , axiom , ! [ V_0 , V_1 ] : ( r_data_FAMTerminator ( V_0 , V_1 ) => ( t_FAMTerminator ( V_0 ) & t_FunctionalData ( V_1 ) ) ) ) .
28fof ( compliance_from_InformationLink , axiom , ! [ V_0 , V_1 ] : ( r_from_InformationLink ( V_0 , V_1 ) => ( t_InformationLink ( V_0 ) & t_FunctionalOutput ( V_1 ) ) ) ) .
29fof ( compliance_to_InformationLink , axiom , ! [ V_0 , V_1 ] : ( r_to_InformationLink ( V_0 , V_1 ) => ( t_InformationLink ( V_0 ) & t_FunctionalInput ( V_1 ) ) ) ) .
30fof ( compliance_data_FunctionalInterface , axiom , ! [ V_0 , V_1 ] : ( r_data_FunctionalInterface ( V_0 , V_1 ) => ( t_FunctionalInterface ( V_0 ) & t_FunctionalData ( V_1 ) ) ) ) .
31fof ( compliance_element_FunctionalInterface , axiom , ! [ V_0 , V_1 ] : ( r_element_FunctionalInterface ( V_0 , V_1 ) => ( t_FunctionalInterface ( V_0 ) & t_FunctionalElement ( V_1 ) ) ) ) .
32fof ( compliance_IncomingLinks_FunctionalInput , axiom , ! [ V_0 , V_1 ] : ( r_IncomingLinks_FunctionalInput ( V_0 , V_1 ) => ( t_FunctionalInput ( V_0 ) & t_InformationLink ( V_1 ) ) ) ) .
33fof ( compliance_outgoingLinks_FunctionalOutput , axiom , ! [ V_0 , V_1 ] : ( r_outgoingLinks_FunctionalOutput ( V_0 , V_1 ) => ( t_FunctionalOutput ( V_0 ) & t_InformationLink ( V_1 ) ) ) ) .
34fof ( compliance_terminator_FunctionalData , axiom , ! [ V_0 , V_1 ] : ( r_terminator_FunctionalData ( V_0 , V_1 ) => ( t_FunctionalData ( V_0 ) & t_FAMTerminator ( V_1 ) ) ) ) .
35fof ( compliance_interface_FunctionalData , axiom , ! [ V_0 , V_1 ] : ( r_interface_FunctionalData ( V_0 , V_1 ) => ( t_FunctionalData ( V_0 ) & t_FunctionalInterface ( V_1 ) ) ) ) .
36fof ( compliance_type_Function , axiom , ! [ V_0 , V_1 ] : ( r_type_Function ( V_0 , V_1 ) => ( t_Function ( V_0 ) & t_FunctionType ( V_1 ) ) ) ) .
37fof ( containment_topLevel_t_FunctionalArchitectureModel , axiom , ! [ A ] : ( t_FunctionalArchitectureModel ( A ) <=> A = o1 ) ) .
38fof ( containment_noDup_r_interface_FunctionalElement , axiom , ? [ A , B ] : ( r_interface_FunctionalElement ( A , B ) => ~ ? [ C , B ] : r_interface_FunctionalElement ( C , B ) ) ) .
39fof ( containment_noDup_r_rootElements_FunctionalArchitectureModel , axiom , ? [ A , B ] : ( r_rootElements_FunctionalArchitectureModel ( A , B ) => ~ ? [ C , B ] : r_rootElements_FunctionalArchitectureModel ( C , B ) ) ) .
40fof ( containment_noDup_r_subElements_Function , axiom , ? [ A , B ] : ( r_subElements_Function ( A , B ) => ~ ? [ C , B ] : r_subElements_Function ( C , B ) ) ) .
41fof ( containment_noDup_r_data_FunctionalInterface , axiom , ? [ A , B ] : ( r_data_FunctionalInterface ( A , B ) => ~ ? [ C , B ] : r_data_FunctionalInterface ( C , B ) ) ) .
42fof ( containment_noDup_r_outgoingLinks_FunctionalOutput , axiom , ? [ A , B ] : ( r_outgoingLinks_FunctionalOutput ( A , B ) => ~ ? [ C , B ] : r_outgoingLinks_FunctionalOutput ( C , B ) ) ) .
43fof ( containment_noDup_r_terminator_FunctionalData , axiom , ? [ A , B ] : ( r_terminator_FunctionalData ( A , B ) => ~ ? [ C , B ] : r_terminator_FunctionalData ( C , B ) ) ) .
44fof ( containment_t_FunctionalElement , axiom , ! [ A ] : ( t_FunctionalElement ( A ) => ? [ B ] : ( ( r_rootElements_FunctionalArchitectureModel ( B , A ) & ~ r_subElements_Function ( B , A ) ) | ( ~ r_rootElements_FunctionalArchitectureModel ( B , A ) & r_subElements_Function ( B , A ) ) ) ) ) .
45fof ( containment_t_FunctionalData , axiom , ! [ A ] : ( t_FunctionalData ( A ) => ? [ B ] : r_data_FunctionalInterface ( B , A ) ) ) .
46fof ( containment_t_InformationLink , axiom , ! [ A ] : ( t_InformationLink ( A ) => ? [ B ] : r_outgoingLinks_FunctionalOutput ( B , A ) ) ) .
47fof ( containment_t_FunctionalInterface , axiom , ! [ A ] : ( t_FunctionalInterface ( A ) => ? [ B ] : r_interface_FunctionalElement ( B , A ) ) ) .
48fof ( containment_t_FAMTerminator , axiom , ! [ A ] : ( t_FAMTerminator ( A ) => ? [ B ] : r_terminator_FunctionalData ( B , A ) ) ) .
49fof ( containment_noCycle_1 , axiom , ~ ? [ V1 ] : ( r_interface_FunctionalElement ( V1 , V1 ) | ( r_rootElements_FunctionalArchitectureModel ( V1 , V1 ) | ( r_subElements_Function ( V1 , V1 ) | ( r_data_FunctionalInterface ( V1 , V1 ) | ( r_outgoingLinks_FunctionalOutput ( V1 , V1 ) | r_terminator_FunctionalData ( V1 , V1 ) ) ) ) ) ) ) .
50fof ( containment_noCycle_2 , axiom , ~ ? [ V1 , V2 ] : ( ( r_interface_FunctionalElement ( V1 , V2 ) | ( r_rootElements_FunctionalArchitectureModel ( V1 , V2 ) | ( r_subElements_Function ( V1 , V2 ) | ( r_data_FunctionalInterface ( V1 , V2 ) | ( r_outgoingLinks_FunctionalOutput ( V1 , V2 ) | r_terminator_FunctionalData ( V1 , V2 ) ) ) ) ) ) & ( r_interface_FunctionalElement ( V2 , V1 ) | ( r_rootElements_FunctionalArchitectureModel ( V2 , V1 ) | ( r_subElements_Function ( V2 , V1 ) | ( r_data_FunctionalInterface ( V2 , V1 ) | ( r_outgoingLinks_FunctionalOutput ( V2 , V1 ) | r_terminator_FunctionalData ( V2 , V1 ) ) ) ) ) ) ) ) .
51fof ( containment_noCycle_3 , axiom , ~ ? [ V1 , V2 , V3 ] : ( ( r_interface_FunctionalElement ( V1 , V2 ) | ( r_rootElements_FunctionalArchitectureModel ( V1 , V2 ) | ( r_subElements_Function ( V1 , V2 ) | ( r_data_FunctionalInterface ( V1 , V2 ) | ( r_outgoingLinks_FunctionalOutput ( V1 , V2 ) | r_terminator_FunctionalData ( V1 , V2 ) ) ) ) ) ) & ( ( r_interface_FunctionalElement ( V2 , V3 ) | ( r_rootElements_FunctionalArchitectureModel ( V2 , V3 ) | ( r_subElements_Function ( V2 , V3 ) | ( r_data_FunctionalInterface ( V2 , V3 ) | ( r_outgoingLinks_FunctionalOutput ( V2 , V3 ) | r_terminator_FunctionalData ( V2 , V3 ) ) ) ) ) ) & ( r_interface_FunctionalElement ( V3 , V1 ) | ( r_rootElements_FunctionalArchitectureModel ( V3 , V1 ) | ( r_subElements_Function ( V3 , V1 ) | ( r_data_FunctionalInterface ( V3 , V1 ) | ( r_outgoingLinks_FunctionalOutput ( V3 , V1 ) | r_terminator_FunctionalData ( V3 , V1 ) ) ) ) ) ) ) ) ) .
52fof ( containment_noCycle_4 , axiom , ~ ? [ V1 , V2 , V3 , V4 ] : ( ( r_interface_FunctionalElement ( V1 , V2 ) | ( r_rootElements_FunctionalArchitectureModel ( V1 , V2 ) | ( r_subElements_Function ( V1 , V2 ) | ( r_data_FunctionalInterface ( V1 , V2 ) | ( r_outgoingLinks_FunctionalOutput ( V1 , V2 ) | r_terminator_FunctionalData ( V1 , V2 ) ) ) ) ) ) & ( ( r_interface_FunctionalElement ( V2 , V3 ) | ( r_rootElements_FunctionalArchitectureModel ( V2 , V3 ) | ( r_subElements_Function ( V2 , V3 ) | ( r_data_FunctionalInterface ( V2 , V3 ) | ( r_outgoingLinks_FunctionalOutput ( V2 , V3 ) | r_terminator_FunctionalData ( V2 , V3 ) ) ) ) ) ) & ( ( r_interface_FunctionalElement ( V3 , V4 ) | ( r_rootElements_FunctionalArchitectureModel ( V3 , V4 ) | ( r_subElements_Function ( V3 , V4 ) | ( r_data_FunctionalInterface ( V3 , V4 ) | ( r_outgoingLinks_FunctionalOutput ( V3 , V4 ) | r_terminator_FunctionalData ( V3 , V4 ) ) ) ) ) ) & ( r_interface_FunctionalElement ( V4 , V1 ) | ( r_rootElements_FunctionalArchitectureModel ( V4 , V1 ) | ( r_subElements_Function ( V4 , V1 ) | ( r_data_FunctionalInterface ( V4 , V1 ) | ( r_outgoingLinks_FunctionalOutput ( V4 , V1 ) | r_terminator_FunctionalData ( V4 , V1 ) ) ) ) ) ) ) ) ) ) .
53fof ( containment_noCycle_5 , axiom , ~ ? [ V1 , V2 , V3 , V4 , V5 ] : ( ( r_interface_FunctionalElement ( V1 , V2 ) | ( r_rootElements_FunctionalArchitectureModel ( V1 , V2 ) | ( r_subElements_Function ( V1 , V2 ) | ( r_data_FunctionalInterface ( V1 , V2 ) | ( r_outgoingLinks_FunctionalOutput ( V1 , V2 ) | r_terminator_FunctionalData ( V1 , V2 ) ) ) ) ) ) & ( ( r_interface_FunctionalElement ( V2 , V3 ) | ( r_rootElements_FunctionalArchitectureModel ( V2 , V3 ) | ( r_subElements_Function ( V2 , V3 ) | ( r_data_FunctionalInterface ( V2 , V3 ) | ( r_outgoingLinks_FunctionalOutput ( V2 , V3 ) | r_terminator_FunctionalData ( V2 , V3 ) ) ) ) ) ) & ( ( r_interface_FunctionalElement ( V3 , V4 ) | ( r_rootElements_FunctionalArchitectureModel ( V3 , V4 ) | ( r_subElements_Function ( V3 , V4 ) | ( r_data_FunctionalInterface ( V3 , V4 ) | ( r_outgoingLinks_FunctionalOutput ( V3 , V4 ) | r_terminator_FunctionalData ( V3 , V4 ) ) ) ) ) ) & ( ( r_interface_FunctionalElement ( V4 , V5 ) | ( r_rootElements_FunctionalArchitectureModel ( V4 , V5 ) | ( r_subElements_Function ( V4 , V5 ) | ( r_data_FunctionalInterface ( V4 , V5 ) | ( r_outgoingLinks_FunctionalOutput ( V4 , V5 ) | r_terminator_FunctionalData ( V4 , V5 ) ) ) ) ) ) & ( r_interface_FunctionalElement ( V5 , V1 ) | ( r_rootElements_FunctionalArchitectureModel ( V5 , V1 ) | ( r_subElements_Function ( V5 , V1 ) | ( r_data_FunctionalInterface ( V5 , V1 ) | ( r_outgoingLinks_FunctionalOutput ( V5 , V1 ) | r_terminator_FunctionalData ( V5 , V1 ) ) ) ) ) ) ) ) ) ) ) .
54fof ( upperMultiplicity_interface_FunctionalElement , axiom , ! [ V_src , V_trg_1 , V_trg_2 ] : ( ( t_FunctionalElement ( V_src ) & ( t_FunctionalInterface ( V_trg_1 ) & t_FunctionalInterface ( V_trg_2 ) ) ) => ( ( r_interface_FunctionalElement ( V_src , V_trg_1 ) & r_interface_FunctionalElement ( V_src , V_trg_2 ) ) => ~ V_trg_1 != V_trg_2 ) ) ) .
55fof ( lowerMultiplicity_model_FunctionalElement , axiom , ! [ V_src ] : ( t_FunctionalElement ( V_src ) => ? [ V_trg_1 ] : ( t_FunctionalArchitectureModel ( V_trg_1 ) & r_model_FunctionalElement ( V_src , V_trg_1 ) ) ) ) .
56fof ( upperMultiplicity_model_FunctionalElement , axiom , ! [ V_src , V_trg_1 , V_trg_2 ] : ( ( t_FunctionalElement ( V_src ) & ( t_FunctionalArchitectureModel ( V_trg_1 ) & t_FunctionalArchitectureModel ( V_trg_2 ) ) ) => ( ( r_model_FunctionalElement ( V_src , V_trg_1 ) & r_model_FunctionalElement ( V_src , V_trg_2 ) ) => ~ V_trg_1 != V_trg_2 ) ) ) .
57fof ( upperMultiplicity_parent_FunctionalElement , axiom , ! [ V_src , V_trg_1 , V_trg_2 ] : ( ( t_FunctionalElement ( V_src ) & ( t_Function ( V_trg_1 ) & t_Function ( V_trg_2 ) ) ) => ( ( r_parent_FunctionalElement ( V_src , V_trg_1 ) & r_parent_FunctionalElement ( V_src , V_trg_2 ) ) => ~ V_trg_1 != V_trg_2 ) ) ) .
58fof ( upperMultiplicity_data_FAMTerminator , axiom , ! [ V_src , V_trg_1 , V_trg_2 ] : ( ( t_FAMTerminator ( V_src ) & ( t_FunctionalData ( V_trg_1 ) & t_FunctionalData ( V_trg_2 ) ) ) => ( ( r_data_FAMTerminator ( V_src , V_trg_1 ) & r_data_FAMTerminator ( V_src , V_trg_2 ) ) => ~ V_trg_1 != V_trg_2 ) ) ) .
59fof ( upperMultiplicity_from_InformationLink , axiom , ! [ V_src , V_trg_1 , V_trg_2 ] : ( ( t_InformationLink ( V_src ) & ( t_FunctionalOutput ( V_trg_1 ) & t_FunctionalOutput ( V_trg_2 ) ) ) => ( ( r_from_InformationLink ( V_src , V_trg_1 ) & r_from_InformationLink ( V_src , V_trg_2 ) ) => ~ V_trg_1 != V_trg_2 ) ) ) .
60fof ( lowerMultiplicity_to_InformationLink , axiom , ! [ V_src ] : ( t_InformationLink ( V_src ) => ? [ V_trg_1 ] : ( t_FunctionalInput ( V_trg_1 ) & r_to_InformationLink ( V_src , V_trg_1 ) ) ) ) .
61fof ( upperMultiplicity_to_InformationLink , axiom , ! [ V_src , V_trg_1 , V_trg_2 ] : ( ( t_InformationLink ( V_src ) & ( t_FunctionalInput ( V_trg_1 ) & t_FunctionalInput ( V_trg_2 ) ) ) => ( ( r_to_InformationLink ( V_src , V_trg_1 ) & r_to_InformationLink ( V_src , V_trg_2 ) ) => ~ V_trg_1 != V_trg_2 ) ) ) .
62fof ( upperMultiplicity_element_FunctionalInterface , axiom , ! [ V_src , V_trg_1 , V_trg_2 ] : ( ( t_FunctionalInterface ( V_src ) & ( t_FunctionalElement ( V_trg_1 ) & t_FunctionalElement ( V_trg_2 ) ) ) => ( ( r_element_FunctionalInterface ( V_src , V_trg_1 ) & r_element_FunctionalInterface ( V_src , V_trg_2 ) ) => ~ V_trg_1 != V_trg_2 ) ) ) .
63fof ( upperMultiplicity_terminator_FunctionalData , axiom , ! [ V_src , V_trg_1 , V_trg_2 ] : ( ( t_FunctionalData ( V_src ) & ( t_FAMTerminator ( V_trg_1 ) & t_FAMTerminator ( V_trg_2 ) ) ) => ( ( r_terminator_FunctionalData ( V_src , V_trg_1 ) & r_terminator_FunctionalData ( V_src , V_trg_2 ) ) => ~ V_trg_1 != V_trg_2 ) ) ) .
64fof ( upperMultiplicity_interface_FunctionalData , axiom , ! [ V_src , V_trg_1 , V_trg_2 ] : ( ( t_FunctionalData ( V_src ) & ( t_FunctionalInterface ( V_trg_1 ) & t_FunctionalInterface ( V_trg_2 ) ) ) => ( ( r_interface_FunctionalData ( V_src , V_trg_1 ) & r_interface_FunctionalData ( V_src , V_trg_2 ) ) => ~ V_trg_1 != V_trg_2 ) ) ) .
65fof ( oppositeReference_interface_FunctionalElement , axiom , ! [ V_src , V_trg ] : ( ( t_FunctionalElement ( V_src ) & t_FunctionalInterface ( V_trg ) ) => ( r_interface_FunctionalElement ( V_src , V_trg ) <=> r_element_FunctionalInterface ( V_trg , V_src ) ) ) ) .
66fof ( oppositeReference_parent_FunctionalElement , axiom , ! [ V_src , V_trg ] : ( ( t_FunctionalElement ( V_src ) & t_Function ( V_trg ) ) => ( r_parent_FunctionalElement ( V_src , V_trg ) <=> r_subElements_Function ( V_trg , V_src ) ) ) ) .
67fof ( oppositeReference_data_FAMTerminator , axiom , ! [ V_src , V_trg ] : ( ( t_FAMTerminator ( V_src ) & t_FunctionalData ( V_trg ) ) => ( r_data_FAMTerminator ( V_src , V_trg ) <=> r_terminator_FunctionalData ( V_trg , V_src ) ) ) ) .
68fof ( oppositeReference_from_InformationLink , axiom , ! [ V_src , V_trg ] : ( ( t_InformationLink ( V_src ) & t_FunctionalOutput ( V_trg ) ) => ( r_from_InformationLink ( V_src , V_trg ) <=> r_outgoingLinks_FunctionalOutput ( V_trg , V_src ) ) ) ) .
69fof ( oppositeReference_to_InformationLink , axiom , ! [ V_src , V_trg ] : ( ( t_InformationLink ( V_src ) & t_FunctionalInput ( V_trg ) ) => ( r_to_InformationLink ( V_src , V_trg ) <=> r_IncomingLinks_FunctionalInput ( V_trg , V_src ) ) ) ) .
70fof ( oppositeReference_data_FunctionalInterface , axiom , ! [ V_src , V_trg ] : ( ( t_FunctionalInterface ( V_src ) & t_FunctionalData ( V_trg ) ) => ( r_data_FunctionalInterface ( V_src , V_trg ) <=> r_interface_FunctionalData ( V_trg , V_src ) ) ) ) .
71fof ( lowerMultiplicity_type_Function , axiom , ! [ V_src ] : ( t_Function ( V_src ) => ? [ V_trg_1 ] : ( t_FunctionType ( V_trg_1 ) & r_type_Function ( V_src , V_trg_1 ) ) ) ) .
72fof ( upperMultiplicity_type_Function , axiom , ! [ V_src , V_trg_1 , V_trg_2 ] : ( ( t_Function ( V_src ) & ( t_FunctionType ( V_trg_1 ) & t_FunctionType ( V_trg_2 ) ) ) => ( ( r_type_Function ( V_src , V_trg_1 ) & r_type_Function ( V_src , V_trg_2 ) ) => ~ V_trg_1 != V_trg_2 ) ) ) .
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.xml b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.xml
index 3770f0af..0d17c01b 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.xml
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.xml
@@ -1,7 +1,10 @@
1<?xml version="1.0" encoding="UTF-8"?><plugin> 1<?xml version="1.0" encoding="UTF-8"?><plugin>
2 <extension id="ca.mcgill.ecse.dslreasoner.vampire.queries.FamPatterns" point="org.eclipse.viatra.query.runtime.queryspecification"> 2 <extension id="ca.mcgill.ecse.dslreasoner.vampire.queries.EcorePatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
3 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.dslreasoner.vampire.queries.FamPatterns" id="ca.mcgill.ecse.dslreasoner.vampire.queries.FamPatterns"> 3 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.dslreasoner.vampire.queries.EcorePatterns" id="ca.mcgill.ecse.dslreasoner.vampire.queries.EcorePatterns">
4 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.queries.terminatorAndInformation"/> 4 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.queries.directSupertype"/>
5 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.queries.loopInInheritence"/>
6 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.queries.opposite"/>
7 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.queries.nonSymmetricOpposite"/>
5 </group> 8 </group>
6 </extension> 9 </extension>
7 <extension id="ca.mcgill.ecse.dslreasoner.vampire.queries.FileSystemPatterns" point="org.eclipse.viatra.query.runtime.queryspecification"> 10 <extension id="ca.mcgill.ecse.dslreasoner.vampire.queries.FileSystemPatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
@@ -11,7 +14,18 @@
11 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.queries.contentInNotLive"/> 14 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.queries.contentInNotLive"/>
12 </group> 15 </group>
13 </extension> 16 </extension>
17 <extension id="ca.mcgill.ecse.dslreasoner.vampire.test.queries.ecore.EcorePatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
18 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.dslreasoner.vampire.test.queries.ecore.EcorePatterns" id="ca.mcgill.ecse.dslreasoner.vampire.test.queries.ecore.EcorePatterns">
19 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.test.queries.ecore.directSupertype"/>
20 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.test.queries.ecore.loopInInheritence"/>
21 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.test.queries.ecore.opposite"/>
22 <query-specification fqn="ca.mcgill.ecse.dslreasoner.vampire.test.queries.ecore.nonSymmetricOpposite"/>
23 </group>
24 </extension>
14 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.vampire.queries.live" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features"> 25 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.vampire.queries.live" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
15 <wellbehaving-derived-feature classifier-name="FileSystem" feature-name="live" package-nsUri="FileSystemMetamodel"/> 26 <wellbehaving-derived-feature classifier-name="FileSystem" feature-name="live" package-nsUri="FileSystemMetamodel"/>
16 </extension> 27 </extension>
28 <extension id="extension.derived.ca.mcgill.ecse.dslreasoner.vampire.test.queries.filesystem.live" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
29 <wellbehaving-derived-feature classifier-name="FileSystem" feature-name="live" package-nsUri="FileSystemMetamodel"/>
30 </extension>
17</plugin> 31</plugin>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/FamPatterns.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/FamPatterns.java
deleted file mode 100644
index cf1378da..00000000
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/FamPatterns.java
+++ /dev/null
@@ -1,53 +0,0 @@
1/**
2 * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/queries/FamPatterns.vql
3 */
4package ca.mcgill.ecse.dslreasoner.vampire.queries;
5
6import ca.mcgill.ecse.dslreasoner.vampire.queries.TerminatorAndInformation;
7import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
8import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup;
9
10/**
11 * A pattern group formed of all public patterns defined in FamPatterns.vql.
12 *
13 * <p>Use the static instance as any {@link interface org.eclipse.viatra.query.runtime.api.IQueryGroup}, to conveniently prepare
14 * a VIATRA Query engine for matching all patterns originally defined in file FamPatterns.vql,
15 * in order to achieve better performance than one-by-one on-demand matcher initialization.
16 *
17 * <p> From package ca.mcgill.ecse.dslreasoner.vampire.queries, the group contains the definition of the following patterns: <ul>
18 * <li>terminatorAndInformation</li>
19 * </ul>
20 *
21 * @see IQueryGroup
22 *
23 */
24@SuppressWarnings("all")
25public final class FamPatterns extends BaseGeneratedPatternGroup {
26 /**
27 * Access the pattern group.
28 *
29 * @return the singleton instance of the group
30 * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications
31 *
32 */
33 public static FamPatterns instance() {
34 if (INSTANCE == null) {
35 INSTANCE = new FamPatterns();
36 }
37 return INSTANCE;
38 }
39
40 private static FamPatterns INSTANCE;
41
42 private FamPatterns() {
43 querySpecifications.add(TerminatorAndInformation.instance());
44 }
45
46 public TerminatorAndInformation getTerminatorAndInformation() {
47 return TerminatorAndInformation.instance();
48 }
49
50 public TerminatorAndInformation.Matcher getTerminatorAndInformation(final ViatraQueryEngine engine) {
51 return TerminatorAndInformation.Matcher.on(engine);
52 }
53}
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/TerminatorAndInformation.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/TerminatorAndInformation.java
deleted file mode 100644
index cb0708ad..00000000
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/TerminatorAndInformation.java
+++ /dev/null
@@ -1,747 +0,0 @@
1/**
2 * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/queries/FamPatterns.vql
3 */
4package ca.mcgill.ecse.dslreasoner.vampire.queries;
5
6import functionalarchitecture.FAMTerminator;
7import functionalarchitecture.InformationLink;
8import java.util.Arrays;
9import java.util.Collection;
10import java.util.LinkedHashSet;
11import java.util.List;
12import java.util.Objects;
13import java.util.Optional;
14import java.util.Set;
15import java.util.function.Consumer;
16import java.util.stream.Collectors;
17import java.util.stream.Stream;
18import org.apache.log4j.Logger;
19import org.eclipse.emf.ecore.EClass;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
29import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * {@literal @}Constraint(message="terminatorAndInformation", severity="error", key={T})
50 * pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
51 * FunctionalOutput.outgoingLinks(Out,I);
52 * FunctionalOutput.terminator(Out,T);
53 * } or {
54 * InformationLink.to(I,In);
55 * FunctionalInput.terminator(In,T);
56 * }
57 * </pre></code>
58 *
59 * @see Matcher
60 * @see Match
61 *
62 */
63@SuppressWarnings("all")
64public final class TerminatorAndInformation extends BaseGeneratedEMFQuerySpecification<TerminatorAndInformation.Matcher> {
65 /**
66 * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.queries.terminatorAndInformation pattern,
67 * to be used in conjunction with {@link Matcher}.
68 *
69 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
70 * Each instance is a (possibly partial) substitution of pattern parameters,
71 * usable to represent a match of the pattern in the result of a query,
72 * or to specify the bound (fixed) input parameters when issuing a query.
73 *
74 * @see Matcher
75 *
76 */
77 public static abstract class Match extends BasePatternMatch {
78 private FAMTerminator fT;
79
80 private InformationLink fI;
81
82 private static List<String> parameterNames = makeImmutableList("T", "I");
83
84 private Match(final FAMTerminator pT, final InformationLink pI) {
85 this.fT = pT;
86 this.fI = pI;
87 }
88
89 @Override
90 public Object get(final String parameterName) {
91 if ("T".equals(parameterName)) return this.fT;
92 if ("I".equals(parameterName)) return this.fI;
93 return null;
94 }
95
96 public FAMTerminator getT() {
97 return this.fT;
98 }
99
100 public InformationLink getI() {
101 return this.fI;
102 }
103
104 @Override
105 public boolean set(final String parameterName, final Object newValue) {
106 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
107 if ("T".equals(parameterName) ) {
108 this.fT = (FAMTerminator) newValue;
109 return true;
110 }
111 if ("I".equals(parameterName) ) {
112 this.fI = (InformationLink) newValue;
113 return true;
114 }
115 return false;
116 }
117
118 public void setT(final FAMTerminator pT) {
119 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
120 this.fT = pT;
121 }
122
123 public void setI(final InformationLink pI) {
124 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
125 this.fI = pI;
126 }
127
128 @Override
129 public String patternName() {
130 return "ca.mcgill.ecse.dslreasoner.vampire.queries.terminatorAndInformation";
131 }
132
133 @Override
134 public List<String> parameterNames() {
135 return TerminatorAndInformation.Match.parameterNames;
136 }
137
138 @Override
139 public Object[] toArray() {
140 return new Object[]{fT, fI};
141 }
142
143 @Override
144 public TerminatorAndInformation.Match toImmutable() {
145 return isMutable() ? newMatch(fT, fI) : this;
146 }
147
148 @Override
149 public String prettyPrint() {
150 StringBuilder result = new StringBuilder();
151 result.append("\"T\"=" + prettyPrintValue(fT) + ", ");
152 result.append("\"I\"=" + prettyPrintValue(fI));
153 return result.toString();
154 }
155
156 @Override
157 public int hashCode() {
158 return Objects.hash(fT, fI);
159 }
160
161 @Override
162 public boolean equals(final Object obj) {
163 if (this == obj)
164 return true;
165 if (obj == null) {
166 return false;
167 }
168 if ((obj instanceof TerminatorAndInformation.Match)) {
169 TerminatorAndInformation.Match other = (TerminatorAndInformation.Match) obj;
170 return Objects.equals(fT, other.fT) && Objects.equals(fI, other.fI);
171 } else {
172 // this should be infrequent
173 if (!(obj instanceof IPatternMatch)) {
174 return false;
175 }
176 IPatternMatch otherSig = (IPatternMatch) obj;
177 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
178 }
179 }
180
181 @Override
182 public TerminatorAndInformation specification() {
183 return TerminatorAndInformation.instance();
184 }
185
186 /**
187 * Returns an empty, mutable match.
188 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
189 *
190 * @return the empty match.
191 *
192 */
193 public static TerminatorAndInformation.Match newEmptyMatch() {
194 return new Mutable(null, null);
195 }
196
197 /**
198 * Returns a mutable (partial) match.
199 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
200 *
201 * @param pT the fixed value of pattern parameter T, or null if not bound.
202 * @param pI the fixed value of pattern parameter I, or null if not bound.
203 * @return the new, mutable (partial) match object.
204 *
205 */
206 public static TerminatorAndInformation.Match newMutableMatch(final FAMTerminator pT, final InformationLink pI) {
207 return new Mutable(pT, pI);
208 }
209
210 /**
211 * Returns a new (partial) match.
212 * This can be used e.g. to call the matcher with a partial match.
213 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
214 * @param pT the fixed value of pattern parameter T, or null if not bound.
215 * @param pI the fixed value of pattern parameter I, or null if not bound.
216 * @return the (partial) match object.
217 *
218 */
219 public static TerminatorAndInformation.Match newMatch(final FAMTerminator pT, final InformationLink pI) {
220 return new Immutable(pT, pI);
221 }
222
223 private static final class Mutable extends TerminatorAndInformation.Match {
224 Mutable(final FAMTerminator pT, final InformationLink pI) {
225 super(pT, pI);
226 }
227
228 @Override
229 public boolean isMutable() {
230 return true;
231 }
232 }
233
234 private static final class Immutable extends TerminatorAndInformation.Match {
235 Immutable(final FAMTerminator pT, final InformationLink pI) {
236 super(pT, pI);
237 }
238
239 @Override
240 public boolean isMutable() {
241 return false;
242 }
243 }
244 }
245
246 /**
247 * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.queries.terminatorAndInformation pattern,
248 * providing pattern-specific query methods.
249 *
250 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
251 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
252 *
253 * <p>Matches of the pattern will be represented as {@link Match}.
254 *
255 * <p>Original source:
256 * <code><pre>
257 * {@literal @}Constraint(message="terminatorAndInformation", severity="error", key={T})
258 * pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
259 * FunctionalOutput.outgoingLinks(Out,I);
260 * FunctionalOutput.terminator(Out,T);
261 * } or {
262 * InformationLink.to(I,In);
263 * FunctionalInput.terminator(In,T);
264 * }
265 * </pre></code>
266 *
267 * @see Match
268 * @see TerminatorAndInformation
269 *
270 */
271 public static class Matcher extends BaseMatcher<TerminatorAndInformation.Match> {
272 /**
273 * Initializes the pattern matcher within an existing VIATRA Query engine.
274 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
275 *
276 * @param engine the existing VIATRA Query engine in which this matcher will be created.
277 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
278 *
279 */
280 public static TerminatorAndInformation.Matcher on(final ViatraQueryEngine engine) {
281 // check if matcher already exists
282 Matcher matcher = engine.getExistingMatcher(querySpecification());
283 if (matcher == null) {
284 matcher = (Matcher)engine.getMatcher(querySpecification());
285 }
286 return matcher;
287 }
288
289 /**
290 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
291 * @return an initialized matcher
292 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
293 *
294 */
295 public static TerminatorAndInformation.Matcher create() {
296 return new Matcher();
297 }
298
299 private final static int POSITION_T = 0;
300
301 private final static int POSITION_I = 1;
302
303 private final static Logger LOGGER = ViatraQueryLoggingUtil.getLogger(TerminatorAndInformation.Matcher.class);
304
305 /**
306 * Initializes the pattern matcher within an existing VIATRA Query engine.
307 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
308 *
309 * @param engine the existing VIATRA Query engine in which this matcher will be created.
310 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
311 *
312 */
313 private Matcher() {
314 super(querySpecification());
315 }
316
317 /**
318 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
319 * @param pT the fixed value of pattern parameter T, or null if not bound.
320 * @param pI the fixed value of pattern parameter I, or null if not bound.
321 * @return matches represented as a Match object.
322 *
323 */
324 public Collection<TerminatorAndInformation.Match> getAllMatches(final FAMTerminator pT, final InformationLink pI) {
325 return rawStreamAllMatches(new Object[]{pT, pI}).collect(Collectors.toSet());
326 }
327
328 /**
329 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
330 * </p>
331 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
332 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
333 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
334 * @param pT the fixed value of pattern parameter T, or null if not bound.
335 * @param pI the fixed value of pattern parameter I, or null if not bound.
336 * @return a stream of matches represented as a Match object.
337 *
338 */
339 public Stream<TerminatorAndInformation.Match> streamAllMatches(final FAMTerminator pT, final InformationLink pI) {
340 return rawStreamAllMatches(new Object[]{pT, pI});
341 }
342
343 /**
344 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
345 * Neither determinism nor randomness of selection is guaranteed.
346 * @param pT the fixed value of pattern parameter T, or null if not bound.
347 * @param pI the fixed value of pattern parameter I, or null if not bound.
348 * @return a match represented as a Match object, or null if no match is found.
349 *
350 */
351 public Optional<TerminatorAndInformation.Match> getOneArbitraryMatch(final FAMTerminator pT, final InformationLink pI) {
352 return rawGetOneArbitraryMatch(new Object[]{pT, pI});
353 }
354
355 /**
356 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
357 * under any possible substitution of the unspecified parameters (if any).
358 * @param pT the fixed value of pattern parameter T, or null if not bound.
359 * @param pI the fixed value of pattern parameter I, or null if not bound.
360 * @return true if the input is a valid (partial) match of the pattern.
361 *
362 */
363 public boolean hasMatch(final FAMTerminator pT, final InformationLink pI) {
364 return rawHasMatch(new Object[]{pT, pI});
365 }
366
367 /**
368 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
369 * @param pT the fixed value of pattern parameter T, or null if not bound.
370 * @param pI the fixed value of pattern parameter I, or null if not bound.
371 * @return the number of pattern matches found.
372 *
373 */
374 public int countMatches(final FAMTerminator pT, final InformationLink pI) {
375 return rawCountMatches(new Object[]{pT, pI});
376 }
377
378 /**
379 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
380 * Neither determinism nor randomness of selection is guaranteed.
381 * @param pT the fixed value of pattern parameter T, or null if not bound.
382 * @param pI the fixed value of pattern parameter I, or null if not bound.
383 * @param processor the action that will process the selected match.
384 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
385 *
386 */
387 public boolean forOneArbitraryMatch(final FAMTerminator pT, final InformationLink pI, final Consumer<? super TerminatorAndInformation.Match> processor) {
388 return rawForOneArbitraryMatch(new Object[]{pT, pI}, processor);
389 }
390
391 /**
392 * Returns a new (partial) match.
393 * This can be used e.g. to call the matcher with a partial match.
394 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
395 * @param pT the fixed value of pattern parameter T, or null if not bound.
396 * @param pI the fixed value of pattern parameter I, or null if not bound.
397 * @return the (partial) match object.
398 *
399 */
400 public TerminatorAndInformation.Match newMatch(final FAMTerminator pT, final InformationLink pI) {
401 return TerminatorAndInformation.Match.newMatch(pT, pI);
402 }
403
404 /**
405 * Retrieve the set of values that occur in matches for T.
406 * @return the Set of all values or empty set if there are no matches
407 *
408 */
409 protected Stream<FAMTerminator> rawStreamAllValuesOfT(final Object[] parameters) {
410 return rawStreamAllValues(POSITION_T, parameters).map(FAMTerminator.class::cast);
411 }
412
413 /**
414 * Retrieve the set of values that occur in matches for T.
415 * @return the Set of all values or empty set if there are no matches
416 *
417 */
418 public Set<FAMTerminator> getAllValuesOfT() {
419 return rawStreamAllValuesOfT(emptyArray()).collect(Collectors.toSet());
420 }
421
422 /**
423 * Retrieve the set of values that occur in matches for T.
424 * @return the Set of all values or empty set if there are no matches
425 *
426 */
427 public Stream<FAMTerminator> streamAllValuesOfT() {
428 return rawStreamAllValuesOfT(emptyArray());
429 }
430
431 /**
432 * Retrieve the set of values that occur in matches for T.
433 * </p>
434 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
435 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
436 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
437 *
438 * @return the Stream of all values or empty set if there are no matches
439 *
440 */
441 public Stream<FAMTerminator> streamAllValuesOfT(final TerminatorAndInformation.Match partialMatch) {
442 return rawStreamAllValuesOfT(partialMatch.toArray());
443 }
444
445 /**
446 * Retrieve the set of values that occur in matches for T.
447 * </p>
448 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
449 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
450 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
451 *
452 * @return the Stream of all values or empty set if there are no matches
453 *
454 */
455 public Stream<FAMTerminator> streamAllValuesOfT(final InformationLink pI) {
456 return rawStreamAllValuesOfT(new Object[]{null, pI});
457 }
458
459 /**
460 * Retrieve the set of values that occur in matches for T.
461 * @return the Set of all values or empty set if there are no matches
462 *
463 */
464 public Set<FAMTerminator> getAllValuesOfT(final TerminatorAndInformation.Match partialMatch) {
465 return rawStreamAllValuesOfT(partialMatch.toArray()).collect(Collectors.toSet());
466 }
467
468 /**
469 * Retrieve the set of values that occur in matches for T.
470 * @return the Set of all values or empty set if there are no matches
471 *
472 */
473 public Set<FAMTerminator> getAllValuesOfT(final InformationLink pI) {
474 return rawStreamAllValuesOfT(new Object[]{null, pI}).collect(Collectors.toSet());
475 }
476
477 /**
478 * Retrieve the set of values that occur in matches for I.
479 * @return the Set of all values or empty set if there are no matches
480 *
481 */
482 protected Stream<InformationLink> rawStreamAllValuesOfI(final Object[] parameters) {
483 return rawStreamAllValues(POSITION_I, parameters).map(InformationLink.class::cast);
484 }
485
486 /**
487 * Retrieve the set of values that occur in matches for I.
488 * @return the Set of all values or empty set if there are no matches
489 *
490 */
491 public Set<InformationLink> getAllValuesOfI() {
492 return rawStreamAllValuesOfI(emptyArray()).collect(Collectors.toSet());
493 }
494
495 /**
496 * Retrieve the set of values that occur in matches for I.
497 * @return the Set of all values or empty set if there are no matches
498 *
499 */
500 public Stream<InformationLink> streamAllValuesOfI() {
501 return rawStreamAllValuesOfI(emptyArray());
502 }
503
504 /**
505 * Retrieve the set of values that occur in matches for I.
506 * </p>
507 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
508 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
509 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
510 *
511 * @return the Stream of all values or empty set if there are no matches
512 *
513 */
514 public Stream<InformationLink> streamAllValuesOfI(final TerminatorAndInformation.Match partialMatch) {
515 return rawStreamAllValuesOfI(partialMatch.toArray());
516 }
517
518 /**
519 * Retrieve the set of values that occur in matches for I.
520 * </p>
521 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
522 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
523 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
524 *
525 * @return the Stream of all values or empty set if there are no matches
526 *
527 */
528 public Stream<InformationLink> streamAllValuesOfI(final FAMTerminator pT) {
529 return rawStreamAllValuesOfI(new Object[]{pT, null});
530 }
531
532 /**
533 * Retrieve the set of values that occur in matches for I.
534 * @return the Set of all values or empty set if there are no matches
535 *
536 */
537 public Set<InformationLink> getAllValuesOfI(final TerminatorAndInformation.Match partialMatch) {
538 return rawStreamAllValuesOfI(partialMatch.toArray()).collect(Collectors.toSet());
539 }
540
541 /**
542 * Retrieve the set of values that occur in matches for I.
543 * @return the Set of all values or empty set if there are no matches
544 *
545 */
546 public Set<InformationLink> getAllValuesOfI(final FAMTerminator pT) {
547 return rawStreamAllValuesOfI(new Object[]{pT, null}).collect(Collectors.toSet());
548 }
549
550 @Override
551 protected TerminatorAndInformation.Match tupleToMatch(final Tuple t) {
552 try {
553 return TerminatorAndInformation.Match.newMatch((FAMTerminator) t.get(POSITION_T), (InformationLink) t.get(POSITION_I));
554 } catch(ClassCastException e) {
555 LOGGER.error("Element(s) in tuple not properly typed!",e);
556 return null;
557 }
558 }
559
560 @Override
561 protected TerminatorAndInformation.Match arrayToMatch(final Object[] match) {
562 try {
563 return TerminatorAndInformation.Match.newMatch((FAMTerminator) match[POSITION_T], (InformationLink) match[POSITION_I]);
564 } catch(ClassCastException e) {
565 LOGGER.error("Element(s) in array not properly typed!",e);
566 return null;
567 }
568 }
569
570 @Override
571 protected TerminatorAndInformation.Match arrayToMatchMutable(final Object[] match) {
572 try {
573 return TerminatorAndInformation.Match.newMutableMatch((FAMTerminator) match[POSITION_T], (InformationLink) match[POSITION_I]);
574 } catch(ClassCastException e) {
575 LOGGER.error("Element(s) in array not properly typed!",e);
576 return null;
577 }
578 }
579
580 /**
581 * @return the singleton instance of the query specification of this pattern
582 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
583 *
584 */
585 public static IQuerySpecification<TerminatorAndInformation.Matcher> querySpecification() {
586 return TerminatorAndInformation.instance();
587 }
588 }
589
590 private TerminatorAndInformation() {
591 super(GeneratedPQuery.INSTANCE);
592 }
593
594 /**
595 * @return the singleton instance of the query specification
596 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
597 *
598 */
599 public static TerminatorAndInformation instance() {
600 try{
601 return LazyHolder.INSTANCE;
602 } catch (ExceptionInInitializerError err) {
603 throw processInitializerError(err);
604 }
605 }
606
607 @Override
608 protected TerminatorAndInformation.Matcher instantiate(final ViatraQueryEngine engine) {
609 return TerminatorAndInformation.Matcher.on(engine);
610 }
611
612 @Override
613 public TerminatorAndInformation.Matcher instantiate() {
614 return TerminatorAndInformation.Matcher.create();
615 }
616
617 @Override
618 public TerminatorAndInformation.Match newEmptyMatch() {
619 return TerminatorAndInformation.Match.newEmptyMatch();
620 }
621
622 @Override
623 public TerminatorAndInformation.Match newMatch(final Object... parameters) {
624 return TerminatorAndInformation.Match.newMatch((functionalarchitecture.FAMTerminator) parameters[0], (functionalarchitecture.InformationLink) parameters[1]);
625 }
626
627 /**
628 * Inner class allowing the singleton instance of {@link JvmGenericType: ca.mcgill.ecse.dslreasoner.vampire.queries.TerminatorAndInformation (visibility: PUBLIC, simpleName: TerminatorAndInformation, identifier: ca.mcgill.ecse.dslreasoner.vampire.queries.TerminatorAndInformation, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: ca.mcgill.ecse.dslreasoner.vampire.queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
629 * <b>not</b> at the class load time of the outer class,
630 * but rather at the first call to {@link JvmGenericType: ca.mcgill.ecse.dslreasoner.vampire.queries.TerminatorAndInformation (visibility: PUBLIC, simpleName: TerminatorAndInformation, identifier: ca.mcgill.ecse.dslreasoner.vampire.queries.TerminatorAndInformation, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: ca.mcgill.ecse.dslreasoner.vampire.queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
631 *
632 * <p> This workaround is required e.g. to support recursion.
633 *
634 */
635 private static class LazyHolder {
636 private final static TerminatorAndInformation INSTANCE = new TerminatorAndInformation();
637
638 /**
639 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
640 * This initialization order is required to support indirect recursion.
641 *
642 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
643 *
644 */
645 private final static Object STATIC_INITIALIZER = ensureInitialized();
646
647 public static Object ensureInitialized() {
648 INSTANCE.ensureInitializedInternal();
649 return null;
650 }
651 }
652
653 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
654 private final static TerminatorAndInformation.GeneratedPQuery INSTANCE = new GeneratedPQuery();
655
656 private final PParameter parameter_T = new PParameter("T", "functionalarchitecture.FAMTerminator", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FAMTerminator")), PParameterDirection.INOUT);
657
658 private final PParameter parameter_I = new PParameter("I", "functionalarchitecture.InformationLink", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "InformationLink")), PParameterDirection.INOUT);
659
660 private final List<PParameter> parameters = Arrays.asList(parameter_T, parameter_I);
661
662 private GeneratedPQuery() {
663 super(PVisibility.PUBLIC);
664 }
665
666 @Override
667 public String getFullyQualifiedName() {
668 return "ca.mcgill.ecse.dslreasoner.vampire.queries.terminatorAndInformation";
669 }
670
671 @Override
672 public List<String> getParameterNames() {
673 return Arrays.asList("T","I");
674 }
675
676 @Override
677 public List<PParameter> getParameters() {
678 return parameters;
679 }
680
681 @Override
682 public Set<PBody> doGetContainedBodies() {
683 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
684 Set<PBody> bodies = new LinkedHashSet<>();
685 {
686 PBody body = new PBody(this);
687 PVariable var_T = body.getOrCreateVariableByName("T");
688 PVariable var_I = body.getOrCreateVariableByName("I");
689 PVariable var_Out = body.getOrCreateVariableByName("Out");
690 new TypeConstraint(body, Tuples.flatTupleOf(var_T), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FAMTerminator")));
691 new TypeConstraint(body, Tuples.flatTupleOf(var_I), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "InformationLink")));
692 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
693 new ExportedParameter(body, var_T, parameter_T),
694 new ExportedParameter(body, var_I, parameter_I)
695 ));
696 // FunctionalOutput.outgoingLinks(Out,I)
697 new TypeConstraint(body, Tuples.flatTupleOf(var_Out), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FunctionalOutput")));
698 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
699 new TypeConstraint(body, Tuples.flatTupleOf(var_Out, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FunctionalOutput", "outgoingLinks")));
700 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "InformationLink")));
701 new Equality(body, var__virtual_0_, var_I);
702 // FunctionalOutput.terminator(Out,T)
703 new TypeConstraint(body, Tuples.flatTupleOf(var_Out), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FunctionalOutput")));
704 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
705 new TypeConstraint(body, Tuples.flatTupleOf(var_Out, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FunctionalData", "terminator")));
706 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FAMTerminator")));
707 new Equality(body, var__virtual_1_, var_T);
708 bodies.add(body);
709 }
710 {
711 PBody body = new PBody(this);
712 PVariable var_T = body.getOrCreateVariableByName("T");
713 PVariable var_I = body.getOrCreateVariableByName("I");
714 PVariable var_In = body.getOrCreateVariableByName("In");
715 new TypeConstraint(body, Tuples.flatTupleOf(var_T), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FAMTerminator")));
716 new TypeConstraint(body, Tuples.flatTupleOf(var_I), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "InformationLink")));
717 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
718 new ExportedParameter(body, var_T, parameter_T),
719 new ExportedParameter(body, var_I, parameter_I)
720 ));
721 // InformationLink.to(I,In)
722 new TypeConstraint(body, Tuples.flatTupleOf(var_I), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "InformationLink")));
723 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
724 new TypeConstraint(body, Tuples.flatTupleOf(var_I, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "InformationLink", "to")));
725 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FunctionalInput")));
726 new Equality(body, var__virtual_0_, var_In);
727 // FunctionalInput.terminator(In,T)
728 new TypeConstraint(body, Tuples.flatTupleOf(var_In), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FunctionalInput")));
729 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
730 new TypeConstraint(body, Tuples.flatTupleOf(var_In, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FunctionalData", "terminator")));
731 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.inf.mit.bme.hu/viatrasolver/example/fam", "FAMTerminator")));
732 new Equality(body, var__virtual_1_, var_T);
733 bodies.add(body);
734 }
735 {
736 PAnnotation annotation = new PAnnotation("Constraint");
737 annotation.addAttribute("message", "terminatorAndInformation");
738 annotation.addAttribute("severity", "error");
739 annotation.addAttribute("key", Arrays.asList(new Object[] {
740 new ParameterReference("T")
741 }));
742 addAnnotation(annotation);
743 }
744 return bodies;
745 }
746 }
747}
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend
index 18b3badd..35b76350 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend
@@ -1,11 +1,10 @@
1package ca.mcgill.ecse.dslreasoner.vampire.icse 1package ca.mcgill.ecse.dslreasoner.vampire.icse
2 2
3import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage
3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver 4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver
4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration 5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration
5import functionalarchitecture.FunctionalarchitecturePackage
6import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic 6import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration 7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration
8import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
9import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel 8import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
10import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner 9import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
11import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult 10import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult
@@ -13,91 +12,48 @@ import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore
13import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic 12import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic 13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic
15import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace 14import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace
16import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
17import java.util.List
18import org.eclipse.emf.ecore.EAttribute
19import org.eclipse.emf.ecore.EClass
20import org.eclipse.emf.ecore.EEnum
21import org.eclipse.emf.ecore.EEnumLiteral
22import org.eclipse.emf.ecore.EObject
23import org.eclipse.emf.ecore.EReference
24import org.eclipse.emf.ecore.resource.Resource
25import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
26 15
27class EcoreTest { 16class EcoreTest {
28 def static void main(String[] args) { 17 def static void main(String[] args) {
29 val inputs = new FileSystemWorkspace('''initialModels/''', "") 18 val inputs = new FileSystemWorkspace('''initialModels/''', "")
30 val workspace = new FileSystemWorkspace('''output/FAMTest/''', "") 19 val workspace = new FileSystemWorkspace('''output/FEcoreTest/''', "")
31 workspace.initAndClear 20 workspace.initAndClear
32 21
33 println("Input and output workspaces are created") 22 println("Input and output workspaces are created")
34 23
35 val metamodel = loadMetamodel() 24 val metamodel = GeneralTest.loadMetamodel(filesystemPackage.eINSTANCE)
36 val partialModel = loadPartialModel(inputs) 25 val partialModel = GeneralTest.loadPartialModel(inputs, "fs/filesystemInstance.xmi")
37// val queries = loadQueries(metamodel) 26// val queries = GeneralTest.loadQueries(metamodel, ecorePatterns.instance)
27 val queries = null
38 28
39 println("DSL loaded") 29 println("DSL loaded")
40 30
41 val Ecore2Logic ecore2Logic = new Ecore2Logic 31 val Ecore2Logic ecore2Logic = new Ecore2Logic
42 val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) 32 val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic)
43 val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) 33 val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic)
44 val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic 34 val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic
45 35
46 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration()) 36 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration())
47 val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel) 37 val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel)
48// val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelGenerationProblem,new Viatra2LogicConfiguration) 38// val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelGenerationProblem,new Viatra2LogicConfiguration)
49
50 val logicProblem = modelGenerationProblem.output 39 val logicProblem = modelGenerationProblem.output
51// val logicProblem = modelExtensionProblem.output 40// val logicProblem = modelExtensionProblem.output
52// val logicProblem = validModelExtensionProblem.output 41// val logicProblem = validModelExtensionProblem.output
53
54
55 println("Problem created") 42 println("Problem created")
56 43
57 var LogicResult solution 44 var LogicResult solution
58 var LogicReasoner reasoner 45 var LogicReasoner reasoner
59 //* 46 // *
60 reasoner = new VampireSolver 47 reasoner = new VampireSolver
61 val vampireConfig = new VampireSolverConfiguration => [ 48 val vampireConfig = new VampireSolverConfiguration => [
62 //add configuration things, in config file first 49 // add configuration things, in config file first
63 it.documentationLevel = DocumentationLevel::FULL 50 it.documentationLevel = DocumentationLevel::FULL
64 ] 51 ]
65
66 solution = reasoner.solve(logicProblem, vampireConfig, workspace)
67
68 println("Problem solved")
69
70
71 }
72 52
73 def private static loadMetamodel() { 53 solution = reasoner.solve(logicProblem, vampireConfig, workspace)
74 val pckg = FunctionalarchitecturePackage.eINSTANCE
75 val List<EClass> classes = pckg.getEClassifiers.filter(EClass).toList
76 val List<EEnum> enums = pckg.getEClassifiers.filter(EEnum).toList
77 val List<EEnumLiteral> literals = enums.map[getELiterals].flatten.toList
78 val List<EReference> references = classes.map[getEReferences].flatten.toList
79 val List<EAttribute> attributes = classes.map[getEAttributes].flatten.toList
80 return new EcoreMetamodelDescriptor(classes,#{},false,enums,literals,references,attributes)
81 }
82 54
83 def private static loadPartialModel(ReasonerWorkspace inputs) { 55 println("Problem solved")
84 Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
85// inputs.readModel(EObject,"FunctionalArchitectureModel.xmi").eResource.allContents.toList
86 inputs.readModel(EObject,"FamInstance.xmi").eResource.allContents.toList
87 }
88 56
89 def private static loadQueries(EcoreMetamodelDescriptor metamodel) {
90// val i = Patterns.instance
91// val patterns = i.specifications.toList
92// val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet
93// val derivedFeatures = new LinkedHashMap
94// derivedFeatures.put(i.type,metamodel.attributes.filter[it.name == "type"].head)
95// derivedFeatures.put(i.model,metamodel.references.filter[it.name == "model"].head)
96// val res = new ViatraQuerySetDescriptor(
97// patterns,
98// wfPatterns,
99// derivedFeatures
100// )
101// return res
102 } 57 }
58
103} 59}
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend
index f66ad93c..3fc3d70f 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend
@@ -1,6 +1,5 @@
1package ca.mcgill.ecse.dslreasoner.vampire.icse 1package ca.mcgill.ecse.dslreasoner.vampire.icse
2 2
3import ca.mcgill.ecse.dslreasoner.vampire.queries.FamPatterns
4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver 3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver
5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration 4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration
6import functionalarchitecture.Function 5import functionalarchitecture.Function
@@ -39,14 +38,15 @@ class FAMTest {
39 38
40 // Load DSL 39 // Load DSL
41 val metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE) 40 val metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE)
42 val partialModel = GeneralTest.loadPartialModel(inputs, "FaModel.xmi") 41 val partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi")
43 val queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance) 42// val queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance)
43 val queries = null
44 44
45 println("DSL loaded") 45 println("DSL loaded")
46 46
47 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration()) 47 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration())
48 var problem = modelGenerationProblem.output 48 var problem = modelGenerationProblem.output
49// problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).output 49 problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).output
50// problem = viatra2Logic.transformQueries(queries, modelGenerationProblem, new Viatra2LogicConfiguration).output 50// problem = viatra2Logic.transformQueries(queries, modelGenerationProblem, new Viatra2LogicConfiguration).output
51 workspace.writeModel(problem, "Fam.logicproblem") 51 workspace.writeModel(problem, "Fam.logicproblem")
52 52
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.xtend
index 50639577..d4cbb299 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.xtend
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.xtend
@@ -1,7 +1,7 @@
1package ca.mcgill.ecse.dslreasoner.vampire.icse 1package ca.mcgill.ecse.dslreasoner.vampire.icse
2 2
3import ca.mcgill.ecse.dslreasoner.vampire.queries
4import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage 3import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage
4import ca.mcgill.ecse.dslreasoner.vampire.queries.FileSystemPatterns
5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver 5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver
6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration 6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic 7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
@@ -24,7 +24,7 @@ class FileSystemTest {
24 24
25 // Workspace setup 25 // Workspace setup
26 val inputs = new FileSystemWorkspace('''initialModels/''', "") 26 val inputs = new FileSystemWorkspace('''initialModels/''', "")
27 val workspace = new FileSystemWorkspace('''output/FAMTest/''', "") 27 val workspace = new FileSystemWorkspace('''output/FileSystemTest/''', "")
28 workspace.initAndClear 28 workspace.initAndClear
29 29
30 // Logicproblem writing setup 30 // Logicproblem writing setup
@@ -34,9 +34,10 @@ class FileSystemTest {
34 34
35 println("Input and output workspaces are created") 35 println("Input and output workspaces are created")
36 36
37
37 val metamodel = GeneralTest.loadMetamodel(filesystemPackage.eINSTANCE) 38 val metamodel = GeneralTest.loadMetamodel(filesystemPackage.eINSTANCE)
38 val partialModel = GeneralTest.loadPartialModel(inputs, "fs/filesystemInstance.xmi") 39 val partialModel = GeneralTest.loadPartialModel(inputs, "fs/filesystemInstance.xmi")
39 //val queries = GeneralTest.loadQueries(metamodel, FileSystemPatterns.instance) 40 val queries = GeneralTest.loadQueries(metamodel, FileSystemPatterns.instance)
40 41
41 println("DSL loaded") 42 println("DSL loaded")
42 43
@@ -44,7 +45,7 @@ class FileSystemTest {
44 var problem = modelGenerationProblem.output 45 var problem = modelGenerationProblem.output
45// problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).output 46// problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).output
46// problem = viatra2Logic.transformQueries(queries, modelGenerationProblem, new Viatra2LogicConfiguration).output 47// problem = viatra2Logic.transformQueries(queries, modelGenerationProblem, new Viatra2LogicConfiguration).output
47 workspace.writeModel(problem, "Fam.logicproblem") 48 workspace.writeModel(problem, "FileSystem.logicproblem")
48 49
49 println("Problem created") 50 println("Problem created")
50 51
@@ -75,8 +76,8 @@ class FileSystemTest {
75 // add configuration things, in config file first 76 // add configuration things, in config file first
76 it.documentationLevel = DocumentationLevel::FULL 77 it.documentationLevel = DocumentationLevel::FULL
77 78
78 it.typeScopes.minNewElements = 4 79 it.typeScopes.minNewElements = 40
79 it.typeScopes.maxNewElements = 5 80 it.typeScopes.maxNewElements = 59
80 if(typeMapMin.size != 0) it.typeScopes.minNewElementsByType = typeMapMin 81 if(typeMapMin.size != 0) it.typeScopes.minNewElementsByType = typeMapMin
81 if(typeMapMin.size != 0) it.typeScopes.maxNewElementsByType = typeMapMax 82 if(typeMapMin.size != 0) it.typeScopes.maxNewElementsByType = typeMapMax
82 it.contCycleLevel = 5 83 it.contCycleLevel = 5
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend
index 1fac968b..f0d88b49 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend
@@ -35,7 +35,7 @@ class YakinduTest {
35 35
36 val metamodel = GeneralTest.loadMetamodel(yakinduPackage.eINSTANCE) 36 val metamodel = GeneralTest.loadMetamodel(yakinduPackage.eINSTANCE)
37 val partialModel = GeneralTest.loadPartialModel(inputs, "yakindu/yakinduinstance.xmi") 37 val partialModel = GeneralTest.loadPartialModel(inputs, "yakindu/yakinduinstance.xmi")
38// val queries = GeneralTest.loadQueries(metamodel, FamPa 38// val queries = GeneralTest.loadQueries(metamodel, yakinduPatterns.instance)
39 val queries = null 39 val queries = null
40 40
41 println("DSL loaded") 41 println("DSL loaded")
@@ -75,8 +75,8 @@ class YakinduTest {
75 // add configuration things, in config file first 75 // add configuration things, in config file first
76 it.documentationLevel = DocumentationLevel::FULL 76 it.documentationLevel = DocumentationLevel::FULL
77 77
78 it.typeScopes.minNewElements = 20 78 it.typeScopes.minNewElements = 53
79 it.typeScopes.maxNewElements = 30 79 it.typeScopes.maxNewElements = 53
80 if(typeMapMin.size != 0) it.typeScopes.minNewElementsByType = typeMapMin 80 if(typeMapMin.size != 0) it.typeScopes.minNewElementsByType = typeMapMin
81 if(typeMapMin.size != 0) it.typeScopes.maxNewElementsByType = typeMapMax 81 if(typeMapMin.size != 0) it.typeScopes.maxNewElementsByType = typeMapMax
82 it.contCycleLevel = 5 82 it.contCycleLevel = 5
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin
index 55d90ac7..2cecdaac 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin
index 8eeb2d28..a34ab846 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin
index ab6aaf6e..a18fd1a5 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin
index cd75a66c..0969c84c 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin
index 1b920064..f0af3ba5 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.java
index 820dd354..7019f162 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.java
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.java
@@ -1,9 +1,9 @@
1package ca.mcgill.ecse.dslreasoner.vampire.icse; 1package ca.mcgill.ecse.dslreasoner.vampire.icse;
2 2
3import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage;
4import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest;
3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver; 5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver;
4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; 6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration;
5import com.google.common.collect.Iterables;
6import functionalarchitecture.FunctionalarchitecturePackage;
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic; 7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic;
8import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration; 8import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration;
9import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace; 9import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace;
@@ -17,27 +17,11 @@ import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore;
17import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic; 17import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic;
18import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic; 18import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic;
19import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace; 19import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace;
20import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace;
21import java.util.Collections;
22import java.util.List;
23import java.util.Map;
24import org.eclipse.emf.common.util.EList; 20import org.eclipse.emf.common.util.EList;
25import org.eclipse.emf.ecore.EAttribute;
26import org.eclipse.emf.ecore.EClass;
27import org.eclipse.emf.ecore.EEnum;
28import org.eclipse.emf.ecore.EEnumLiteral;
29import org.eclipse.emf.ecore.EObject; 21import org.eclipse.emf.ecore.EObject;
30import org.eclipse.emf.ecore.EReference;
31import org.eclipse.emf.ecore.resource.Resource;
32import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
33import org.eclipse.xtend2.lib.StringConcatenation; 22import org.eclipse.xtend2.lib.StringConcatenation;
34import org.eclipse.xtext.xbase.lib.CollectionLiterals;
35import org.eclipse.xtext.xbase.lib.Exceptions; 23import org.eclipse.xtext.xbase.lib.Exceptions;
36import org.eclipse.xtext.xbase.lib.Functions.Function1;
37import org.eclipse.xtext.xbase.lib.InputOutput; 24import org.eclipse.xtext.xbase.lib.InputOutput;
38import org.eclipse.xtext.xbase.lib.IterableExtensions;
39import org.eclipse.xtext.xbase.lib.IteratorExtensions;
40import org.eclipse.xtext.xbase.lib.ListExtensions;
41import org.eclipse.xtext.xbase.lib.ObjectExtensions; 25import org.eclipse.xtext.xbase.lib.ObjectExtensions;
42import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; 26import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
43 27
@@ -49,12 +33,13 @@ public class EcoreTest {
49 _builder.append("initialModels/"); 33 _builder.append("initialModels/");
50 final FileSystemWorkspace inputs = new FileSystemWorkspace(_builder.toString(), ""); 34 final FileSystemWorkspace inputs = new FileSystemWorkspace(_builder.toString(), "");
51 StringConcatenation _builder_1 = new StringConcatenation(); 35 StringConcatenation _builder_1 = new StringConcatenation();
52 _builder_1.append("output/FAMTest/"); 36 _builder_1.append("output/FEcoreTest/");
53 final FileSystemWorkspace workspace = new FileSystemWorkspace(_builder_1.toString(), ""); 37 final FileSystemWorkspace workspace = new FileSystemWorkspace(_builder_1.toString(), "");
54 workspace.initAndClear(); 38 workspace.initAndClear();
55 InputOutput.<String>println("Input and output workspaces are created"); 39 InputOutput.<String>println("Input and output workspaces are created");
56 final EcoreMetamodelDescriptor metamodel = EcoreTest.loadMetamodel(); 40 final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(filesystemPackage.eINSTANCE);
57 final List<EObject> partialModel = EcoreTest.loadPartialModel(inputs); 41 final EList<EObject> partialModel = GeneralTest.loadPartialModel(inputs, "fs/filesystemInstance.xmi");
42 final Object queries = null;
58 InputOutput.<String>println("DSL loaded"); 43 InputOutput.<String>println("DSL loaded");
59 final Ecore2Logic ecore2Logic = new Ecore2Logic(); 44 final Ecore2Logic ecore2Logic = new Ecore2Logic();
60 final Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic); 45 final Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic);
@@ -80,38 +65,4 @@ public class EcoreTest {
80 throw Exceptions.sneakyThrow(_e); 65 throw Exceptions.sneakyThrow(_e);
81 } 66 }
82 } 67 }
83
84 private static EcoreMetamodelDescriptor loadMetamodel() {
85 final FunctionalarchitecturePackage pckg = FunctionalarchitecturePackage.eINSTANCE;
86 final List<EClass> classes = IterableExtensions.<EClass>toList(Iterables.<EClass>filter(pckg.getEClassifiers(), EClass.class));
87 final List<EEnum> enums = IterableExtensions.<EEnum>toList(Iterables.<EEnum>filter(pckg.getEClassifiers(), EEnum.class));
88 final Function1<EEnum, EList<EEnumLiteral>> _function = (EEnum it) -> {
89 return it.getELiterals();
90 };
91 final List<EEnumLiteral> literals = IterableExtensions.<EEnumLiteral>toList(Iterables.<EEnumLiteral>concat(ListExtensions.<EEnum, EList<EEnumLiteral>>map(enums, _function)));
92 final Function1<EClass, EList<EReference>> _function_1 = (EClass it) -> {
93 return it.getEReferences();
94 };
95 final List<EReference> references = IterableExtensions.<EReference>toList(Iterables.<EReference>concat(ListExtensions.<EClass, EList<EReference>>map(classes, _function_1)));
96 final Function1<EClass, EList<EAttribute>> _function_2 = (EClass it) -> {
97 return it.getEAttributes();
98 };
99 final List<EAttribute> attributes = IterableExtensions.<EAttribute>toList(Iterables.<EAttribute>concat(ListExtensions.<EClass, EList<EAttribute>>map(classes, _function_2)));
100 return new EcoreMetamodelDescriptor(classes, Collections.<EClass>unmodifiableSet(CollectionLiterals.<EClass>newHashSet()), false, enums, literals, references, attributes);
101 }
102
103 private static List<EObject> loadPartialModel(final ReasonerWorkspace inputs) {
104 List<EObject> _xblockexpression = null;
105 {
106 Map<String, Object> _extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
107 XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
108 _extensionToFactoryMap.put("*", _xMIResourceFactoryImpl);
109 _xblockexpression = IteratorExtensions.<EObject>toList(inputs.<EObject>readModel(EObject.class, "FamInstance.xmi").eResource().getAllContents());
110 }
111 return _xblockexpression;
112 }
113
114 private static Object loadQueries(final EcoreMetamodelDescriptor metamodel) {
115 return null;
116 }
117} 68}
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java
index 5fc2a391..08f1b4a7 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java
@@ -1,7 +1,6 @@
1package ca.mcgill.ecse.dslreasoner.vampire.icse; 1package ca.mcgill.ecse.dslreasoner.vampire.icse;
2 2
3import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest; 3import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest;
4import ca.mcgill.ecse.dslreasoner.vampire.queries.FamPatterns;
5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver; 4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver;
6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; 5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration;
7import functionalarchitecture.Function; 6import functionalarchitecture.Function;
@@ -18,7 +17,6 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type;
18import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem; 17import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem;
19import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult; 18import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult;
20import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic; 19import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic;
21import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor;
22import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic; 20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic;
23import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace; 21import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace;
24import java.util.HashMap; 22import java.util.HashMap;
@@ -53,12 +51,13 @@ public class FAMTest {
53 map.put("logicproblem", _xMIResourceFactoryImpl); 51 map.put("logicproblem", _xMIResourceFactoryImpl);
54 InputOutput.<String>println("Input and output workspaces are created"); 52 InputOutput.<String>println("Input and output workspaces are created");
55 final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE); 53 final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE);
56 final EList<EObject> partialModel = GeneralTest.loadPartialModel(inputs, "FaModel.xmi"); 54 final EList<EObject> partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi");
57 final ViatraQuerySetDescriptor queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance()); 55 final Object queries = null;
58 InputOutput.<String>println("DSL loaded"); 56 InputOutput.<String>println("DSL loaded");
59 Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration(); 57 Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration();
60 final TracedOutput<LogicProblem, Ecore2Logic_Trace> modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration); 58 final TracedOutput<LogicProblem, Ecore2Logic_Trace> modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration);
61 LogicProblem problem = modelGenerationProblem.getOutput(); 59 LogicProblem problem = modelGenerationProblem.getOutput();
60 problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).getOutput();
62 workspace.writeModel(problem, "Fam.logicproblem"); 61 workspace.writeModel(problem, "Fam.logicproblem");
63 InputOutput.<String>println("Problem created"); 62 InputOutput.<String>println("Problem created");
64 long startTime = System.currentTimeMillis(); 63 long startTime = System.currentTimeMillis();
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.java
index eedec995..f7f8a5ee 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.java
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.java
@@ -2,6 +2,7 @@ package ca.mcgill.ecse.dslreasoner.vampire.icse;
2 2
3import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage; 3import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage;
4import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest; 4import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest;
5import ca.mcgill.ecse.dslreasoner.vampire.queries.FileSystemPatterns;
5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver; 6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver;
6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; 7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration;
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic; 8import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic;
@@ -15,6 +16,7 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type;
15import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem; 16import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem;
16import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult; 17import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult;
17import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic; 18import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic;
19import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor;
18import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic; 20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic;
19import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace; 21import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace;
20import java.util.HashMap; 22import java.util.HashMap;
@@ -40,7 +42,7 @@ public class FileSystemTest {
40 _builder.append("initialModels/"); 42 _builder.append("initialModels/");
41 final FileSystemWorkspace inputs = new FileSystemWorkspace(_builder.toString(), ""); 43 final FileSystemWorkspace inputs = new FileSystemWorkspace(_builder.toString(), "");
42 StringConcatenation _builder_1 = new StringConcatenation(); 44 StringConcatenation _builder_1 = new StringConcatenation();
43 _builder_1.append("output/FAMTest/"); 45 _builder_1.append("output/FileSystemTest/");
44 final FileSystemWorkspace workspace = new FileSystemWorkspace(_builder_1.toString(), ""); 46 final FileSystemWorkspace workspace = new FileSystemWorkspace(_builder_1.toString(), "");
45 workspace.initAndClear(); 47 workspace.initAndClear();
46 final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; 48 final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
@@ -50,11 +52,12 @@ public class FileSystemTest {
50 InputOutput.<String>println("Input and output workspaces are created"); 52 InputOutput.<String>println("Input and output workspaces are created");
51 final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(filesystemPackage.eINSTANCE); 53 final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(filesystemPackage.eINSTANCE);
52 final EList<EObject> partialModel = GeneralTest.loadPartialModel(inputs, "fs/filesystemInstance.xmi"); 54 final EList<EObject> partialModel = GeneralTest.loadPartialModel(inputs, "fs/filesystemInstance.xmi");
55 final ViatraQuerySetDescriptor queries = GeneralTest.loadQueries(metamodel, FileSystemPatterns.instance());
53 InputOutput.<String>println("DSL loaded"); 56 InputOutput.<String>println("DSL loaded");
54 Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration(); 57 Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration();
55 final TracedOutput<LogicProblem, Ecore2Logic_Trace> modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration); 58 final TracedOutput<LogicProblem, Ecore2Logic_Trace> modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration);
56 LogicProblem problem = modelGenerationProblem.getOutput(); 59 LogicProblem problem = modelGenerationProblem.getOutput();
57 workspace.writeModel(problem, "Fam.logicproblem"); 60 workspace.writeModel(problem, "FileSystem.logicproblem");
58 InputOutput.<String>println("Problem created"); 61 InputOutput.<String>println("Problem created");
59 long startTime = System.currentTimeMillis(); 62 long startTime = System.currentTimeMillis();
60 LogicReasoner reasoner = null; 63 LogicReasoner reasoner = null;
@@ -67,8 +70,8 @@ public class FileSystemTest {
67 VampireSolverConfiguration _vampireSolverConfiguration = new VampireSolverConfiguration(); 70 VampireSolverConfiguration _vampireSolverConfiguration = new VampireSolverConfiguration();
68 final Procedure1<VampireSolverConfiguration> _function = (VampireSolverConfiguration it) -> { 71 final Procedure1<VampireSolverConfiguration> _function = (VampireSolverConfiguration it) -> {
69 it.documentationLevel = DocumentationLevel.FULL; 72 it.documentationLevel = DocumentationLevel.FULL;
70 it.typeScopes.minNewElements = 4; 73 it.typeScopes.minNewElements = 40;
71 it.typeScopes.maxNewElements = 5; 74 it.typeScopes.maxNewElements = 59;
72 int _size = typeMapMin.size(); 75 int _size = typeMapMin.size();
73 boolean _notEquals = (_size != 0); 76 boolean _notEquals = (_size != 0);
74 if (_notEquals) { 77 if (_notEquals) {
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.java
index 81079764..3a322ee0 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.java
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.java
@@ -68,8 +68,8 @@ public class YakinduTest {
68 VampireSolverConfiguration _vampireSolverConfiguration = new VampireSolverConfiguration(); 68 VampireSolverConfiguration _vampireSolverConfiguration = new VampireSolverConfiguration();
69 final Procedure1<VampireSolverConfiguration> _function = (VampireSolverConfiguration it) -> { 69 final Procedure1<VampireSolverConfiguration> _function = (VampireSolverConfiguration it) -> {
70 it.documentationLevel = DocumentationLevel.FULL; 70 it.documentationLevel = DocumentationLevel.FULL;
71 it.typeScopes.minNewElements = 20; 71 it.typeScopes.minNewElements = 53;
72 it.typeScopes.maxNewElements = 30; 72 it.typeScopes.maxNewElements = 53;
73 int _size = typeMapMin.size(); 73 int _size = typeMapMin.size();
74 boolean _notEquals = (_size != 0); 74 boolean _notEquals = (_size != 0);
75 if (_notEquals) { 75 if (_notEquals) {
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin
index 29f8df00..c5ed4b90 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin
index 72d33e5d..21fdd9b7 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin
index e9c4c0a4..b1887ff2 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin
Binary files differ